5
Chciałbym zastosować funkcję do wszystkich kolumna w data.table. Dlatego używam .SD z lapply. Ale w lapply nie mogę odzyskać kolumny mojego stolika.Pobierz nazwę kolumny wewnątrz lapply z .SD
Na przykład
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
I wykonaj następujące czynności:
x[,lapply(.SD,function(t){t*x$id}),.SDcols=c(1,2)]
możemy zrobić lepiej?
Dzięki! Czy istnieje sposób na uniknięcie stosowania funkcji w kolumnie i? – Nicolas
@Nicolas, sprawdź moją edycję. Mała wskazówka, jeśli zależy Ci na szybkości, spróbuj zawsze nadać swojej funkcji najbardziej zwartą strukturę (często oznacza to szybszy kod). – Michele
Podobają mi się pierwsze z trzech podanych przez ciebie alternatyw, chociaż użycie '.SD' staje się zbędne. Myślę, że 'x [, lapply (list (a, b),' * ', id)]' jest najlepszym rozwiązaniem i nie wymaga pisania więcej niż używanie '.SDcols' w pierwszej kolejności. –