Ich versuche, eine Reihe von data.tables auf ähnliche Weise zu bearbeiten, und möchte eine Funktion schreiben, um dies zu erreichen. Ich möchte einen Parameter übergeben, der eine Liste von Spalten enthält, in denen die Operationen ausgeführt werden. Dies funktioniert gut, wenn die Vektordeklaration von Spalten die linke Seite des: = -Operators ist, aber nicht, wenn sie früher deklariert (oder an die Funktion übergeben) wird. Der folgende Code zeigt das Problem.Entfernen mehrerer Spalten aus R data.table mit Parameter für zu entfernende Spalten
dt = data.table(a = letters, b = 1:2, c=1:13)
colsToDelete = c('b', 'c')
dt[,colsToDelete := NULL] # doesn't work but I don't understand why not.
dt[,c('b', 'c') := NULL] # works fine, but doesn't allow passing in of columns
Der Fehler wird als "neue Spalte 'colsToDelete' dann NULL Zuweisen Hinzufügen (ihn zu löschen)." So interpretiert es eindeutig 'colsToDelete' als neuen Spaltennamen.
Das gleiche Problem tritt auf, wenn etwas in diese Richtung
dt[, colNames := lapply(.SD, adjustValue, y=factor), .SDcols = colNames]
I R neu zu tun, sondern mehr Erfahrung mit einigen anderen Sprachen, so kann dies eine dumme Frage sein.