У меня есть подмножество фрейма данных из 16 столбцов. Все они являются факторами с одинаковыми уровнями и ярлыками. Я пытаюсь использовать одну из функций apply()
для одновременного назначения уровней и меток, но моя функция печатает результаты, а не присваивает их фрейму данных. Я мог бы выписать их все по отдельности — их всего 16, — но позже у меня есть большие группы переменных, чтобы сделать коэффициенты, так что это сэкономило бы мне много работы.
Пример данных:
df <- structure(list(col1 = c(0L, 1L, 1L, 0L, 1L, 1L, -1L, 0L, 0L,
1L), col2 = c(0L, 0L, -1L, 0L, -1L, -1L, 1L, 0L, 0L, 1L), col3 = c(-1L,
1L, 1L, -1L, 0L, 1L, 0L, 0L, -1L, -1L), col4 = c(0L, 0L, 0L,
1L, 1L, 0L, 0L, 1L, 1L, 0L), col5 = c(-1L, -1L, 0L, 1L, 0L, 0L,
1L, -1L, 0L, 1L)), .Names = c("col1", "col2", "col3", "col4",
"col5"), row.names = c(NA, -10L), class = "data.frame")
С этими данными я пробовал:
levels <- -1:1
labels <- c("Don't know", "Not mentioned", "Mentioned")
lapply(as.list(1:5), function(x){
df[, x] <<- factor(df[, x], levels = levels, labels = labels)
})
Это печатает каждую переменную, а не назначает ее исходному фрейму данных, а также неправильно делает все ячейки NA
. Ясно, что я делаю что-то не так, но я не вижу, что (может быть, мне не хватило кофе).
Мой вопрос: как я могу назначить уровни и метки нескольким переменным одновременно, возможно, с помощью функции xapply()
.
Я видел эту запись на R Блоггеры поэтому использовали <<-
вместо <-
, но безрезультатно, и я также безуспешно пробовал assign()
.
Спасибо.
df
перезаписываются 3 строковыми значениями. - person Brett DeWoody   schedule 11.05.2015df[] <- lapply(df, factor, levels = levels, labels = labels)
. - person David Arenburg   schedule 11.05.2015