Subset-Datenrahmen basierend auf dem Zeichenvektor der Spaltennamen [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Drop-Datenrahmenspalten nach Namen 19 answers

Anfängerfrage - Vielen Dank im Voraus für die Geduld ...

Ich habe einen Datenrahmen:

vals <- c(1,1,1,1)
testdf <- data.frame("var1"=vals, "var2"=vals, "var3"=vals)

Ich habe einen Zeichenvektor mit Variablennamen:

varnames <- c("var1", "var2")

Dies ist ein Zeichenvektor, mit dem ich früher im Skript eine Formel generiere.

Ich möchte einen Datenrahmen so unterteilen, dass Variablen in Variablennamen ausgeschlossen werden, z. B.

newDF <- subset(df, select=-varnames)

Dies erzeugt einen Fehler seitsubset erwartet Namen anstelle von Zeichen. Also benutze ichlapply, um die Zeichen in Namen zu ändern:

varnames <- lapply(varnames, as.name)

Das Ergebnis dieser Funktion ist eine benannte (?) Und verschachtelte (?) Liste.

[[1]]
var1

[[2]]
var2

[[3]]
var3

Hier verliere ich mich (ich fühle mich wie Mugatu auf verrückten Pillen ... ist das verwirrend für alle anderen !?). Ich kann sehen, dass jeder Wert korrekt von Zeichen zu Name geändert wurde, aber er befindet sich in dieser seltsamen verschachtelten Struktur. Wenn ich also versuche, eine Teilmenge zu bilden, erhalte ich eine Fehlermeldung.

Ich habe verschiedene lösungen ausprobiert um unnest und unname, aber ohne erfolg. Das muss etwas Leichtes sein, das ich vermisse.

Als Bonus - kann mir jemand sagen, warum es für lapply jemals nützlich ist, diese verschachtelte benannte Liste anstelle eines einfachen Vektors zurückzugeben? Es scheint ganz anders zu sein als zum Beispiel Python. Vielen Dank

Antworten auf die Frage(6)

Ihre Antwort auf die Frage