в настоящее время у меня есть фрагмент кода, который выглядит как этот
as.formula(paste0('Y~',paste('factor','(', names(te)[w],')', sep="",collapse="+")))
ответ (Y) и предикторы TRY1, Y2, UYP21 и GHT9 являются именами столбцов фрейма данных te, а w — это вектор, который индексирует имена столбцов, поскольку для модели выбираются только определенные столбцы из фрейма данных.
Моя проблема в том, что этот код запишет формулу для всех предикторов как factor(). Как я могу написать кусок, который решит, что для w = 12 (12-й столбец te) это должен быть не фактор, а as.numeric. В более общем случае он должен проверить класс столбца фрейма данных с помощью class(), а затем решить, использовать ли фактор или числовой. Желаемый результат
Y~factor(TRY1)+factor(TRY2)+factor(UYP21)+as.numeric(GHT9)
в то время как текущий код производит
Y~factor(TRY1)+factor(TRY2)+factor(UYP21)+factor(GHT9)
предоставленный ответ работает очень хорошо, но проблема в том, что он действительно не должен быть as.numeric не только numeri
sapply(y, class)
илиsapply(y, is.factor)
, чтобы найти класс. - person akrun   schedule 12.01.2015GHT9
является числовым, то зачем вам указыватьas.numeric(GHT9)
- person akrun   schedule 12.01.2015do.call(paste(stuff))
- person Carl Witthoft   schedule 12.01.2015list
для хранения ваших данных) - person Carl Witthoft   schedule 12.01.2015factor()
в формуле. Вы импортировали их как персонажей? Если это так, самым простым решением будет просто преобразовать столбцы ваших символов в фактор, поскольку именно так вы хотите, чтобы они вели себя. Не используйте формулу для решения проблем с данными; просто исправьте свои данные. - person MrFlick   schedule 12.01.2015