Поднабор данных, основанный на символьном векторе имен столбцов [дубликаты]
На этот вопрос уже есть ответ здесь:
Удалить столбцы фрейма данных по имени 19 ответовВопрос новичка - заранее спасибо за терпение ...
У меня есть датафрейм:
vals <- c(1,1,1,1)
testdf <- data.frame("var1"=vals, "var2"=vals, "var3"=vals)
У меня есть символьный вектор имен переменных:
varnames <- c("var1", "var2")
Это символьный вектор. Я использую его для генерации формулы в скрипте.
Я хотел бы установить подкадр данных таким образом, чтобы исключались переменные в именах переменных, например
newDF <- subset(df, select=-varnames)
Это создает ошибку, так какsubset
ожидает имена вместо символов. Итак, я используюlapply
изменить символы на имена:
varnames <- lapply(varnames, as.name)
Результатом этой функции lapply является именованный (?) И вложенный (?) Список.
[[1]]
var1
[[2]]
var2
[[3]]
var3
Вот где я заблудился (я чувствую себя Мугату на сумасшедших таблетках ... это смущает кого-то еще !?). Я вижу, что каждое значение было правильно изменено с символа на имя, но оно находится в этой странной вложенной структуре - поэтому, когда я пытаюсь установить подмножество, я получаю ошибку.
Я пробовал разные решения, чтобы отменить и назвать, но безуспешно. Это должно быть что-то легкое, что я скучаю.
В качестве бонуса - может кто-нибудь сказать мне, почему для lapply всегда полезно возвращать этот вложенный именованный список вместо простого вектора? Кажется, он сильно отличается от, например, Python. Спасибо.