Поднабор данных, основанный на символьном векторе имен столбцов [дубликаты]

На этот вопрос уже есть ответ здесь:

Удалить столбцы фрейма данных по имени 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. Спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос