Я бы сказал, что нет портативного и 100% надежного способа из-за зависания alias
. Например:
alias john='ls --color'
alias paul='george -F'
alias george='ls -h'
alias ringo=/
Конечно, только последний является проблематичным (без обид на Ringo!) Но все они действительны alias
es с точки зрения command -v
.
Чтобы отклонить оборванные, такие как ringo
, мы должны проанализировать вывод встроенной команды alias
оболочки и рекурсии в них (command -v
здесь не превосходит alias
.)
Обратите внимание, что подобное решение безоговорочно отвергает alias ls='ls -F'
test() { command -v $1 | grep -qv alias }
Не знаю, почему @Janos удалил свой ответ, но это правильно: в вашем фрейме данных Train
нет столбца с именем pre
. Когда вы передаете формулу и кадр данных в функцию установки модели, имена в формуле должны ссылаться на столбцы в фрейме данных. В вашем Train
есть столбцы, называемые residual.sugar
, total.sulfur
, alcohol
и quality
. Вам нужно изменить формулу или фрейм данных, чтобы они были согласованы друг с другом.
И просто для уточнения: Pre
- это объект, содержащий формулу. Эта формула содержит ссылку на переменную pre
. Это последнее должно быть согласовано с кадром данных.
Чтобы добавить к этому; Это может произойти, если вы не приложите свой набор данных. Просто потратил полчаса, выяснив это также.
Cheers
Я думаю, что получил то, что искал.
data.train <- read.table("Assign2.WineComplete.csv",sep=",",header=T)
fit <- rpart(quality ~ ., method="class",data=data.train)
plot(fit)
text(fit, use.n=TRUE)
summary(fit)
Я использую colname (train) = paste («A», colname (train)), и он оказывается с той же проблемой, что и ваш.
Наконец, я выяснил, что randomForest более скупо, чем rpart , он не может распознать colname с пробелом, запятой или другой определенной пунктуацией.
Функцияpaste добавит «A» и «» в качестве разделителя с каждым colname. поэтому нам нужно отменить это пространство и использовать это предложение:
colname(train) = paste("A", colname(train), sep = "")
это добавит строку без пробела.