5
Vorrei applicare una funzione a tutte le colonne in data.table. Quindi, io uso .SD con lapply. Ma all'interno di lapply non riesco a recuperare la colonna del mio tavolo.Recupera il nome della colonna all'interno del lapply con .SD
Per esempio
x = data.table(a=1:10, b=10:1, id=1:5)
x[,lapply(.SD,function(t){t*id}),.SDcols=c(1,2)]
Error in ..FUN(a) : object 'id' not found
ho effettuare le seguenti operazioni:
x[,lapply(.SD,function(t){t*x$id}),.SDcols=c(1,2)]
Possiamo fare di meglio?
Grazie! C'è un modo per evitare di applicare la funzione sulla colonna i? – Nicolas
@Nicolas controlla la mia modifica. Piccolo consiglio, se la tua mente è veloce, cerca sempre di dare alla tua funzione la struttura più compatta che puoi (spesso significa codice più veloce). – Michele
Mi piace la prima delle tre alternative fornite, anche se l'uso di '.SD' diventa ridondante. Penso che 'x [, lapply (lista (a, b),' * ', id)]' sia la soluzione migliore, e non richiede più la digitazione che usare '.SDcols' in primo luogo. –