#r #loops #for-loop
#r #циклы #for-цикл
Вопрос:
Мне нужно создать фиктивную переменную для каждого отдельного уникального категориального значения переменной в моем фрейме данных.
Мне интересно, могу ли я превратиться unique(data$variable)
в вектор, а затем создать forloop, который присваивает новую переменную для каждого значения. Что-то вроде
for(val in vector){
data$print(val)<- ifelse(data$variable == val, 1, 0)}
Когда я пытаюсь это сделать, я получаю эту ошибку:
недопустимая функция при сложном назначении
Изменение кода на `for(значение в векторе){
data$print[val]<- ifelse(data$variable == val, 1, 0)}`
выдает ошибку
Ошибка в
$<-.data.frame
(*tmp*
, print, value = c(1, 1, 1, 1, 1, 1, : замена имеет 480437 строк, данные имеют 480436
data$variable также является .factor уже
Заранее спасибо за помощь.
Комментарии:
1. Это помогло бы увидеть (часть) вашего набора данных. Кроме того, вы пытаетесь выполнить цикл через data $print? Если это так, это должно быть data$print[val]
2. я думаю, что простое преобразование этой переменной в factor должно сработать, т.е.
data$variable <- as.factor(data$variable)
Ответ №1:
Правильный код был
`for(value in vector) {
nam <- paste(value)
assign(nam, ifelse(data$variable == value, "1", "0"))
data<-cbind(data, get(value))
}`
где assign создает объекты для результата каждого оператора ifelse, а cbind присоединяет их к фрейму данных