Sto provando a manipolare un numero di data.tables in modi simili e vorrei scrivere una funzione per farlo. Vorrei passare in un parametro che contiene un elenco di colonne in cui verranno eseguite le operazioni. Funziona perfettamente quando la dichiarazione vettoriale di colonne è il lato sinistro dell'operatore: =, ma non se è dichiarata in precedenza (o passata alla funzione). Il codice seguente mostra il problema.Rimozione di più colonne da R data.table con parametro per colonne da rimuovere
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
L'errore viene "Aggiunta nuova colonna 'colsToDelete' assegnando NULL (eliminandolo)." Quindi, chiaramente, interpreta 'colsToDelete' come un nuovo nome di colonna.
Lo stesso problema si verifica quando si fa qualcosa in questo senso
dt[, colNames := lapply(.SD, adjustValue, y=factor), .SDcols = colNames]
ho di nuovo da R, ma un po 'più esperto con alcune altre lingue, quindi questo potrebbe essere una domanda stupida.