Wenn ich die folgende einfache Datentabelle haben:Anzahl der Reihen von .SD
DT <- data.table(VAL = sample(c(1, 2, 3), 10, replace = TRUE),Group = c(rep("A",5),rep("B",5)))
ich den Mittelwert über calc kann:
DT[,lapply(.SD,function(x){mean(x)}),by=Group]
konnte ich auch verwenden:
DT[,lapply(.SD,function(x){sum(x)/.N}),by=Group]
Aber meine Frage ist, warum das folgende NICHT funktioniert:
DT[,lapply(.SD,function(x){sum(x)/nrow(x)}),by=Group]
Aus meiner Sicht, .SD ist eine Unter-Datentabelle der vollständigen Datentabelle, also via Funktion (x) sollte ich in der Lage sein, auf die Anzahl der Zeilen von x beziehen - oder mit anderen Worten, warum kann ich Summe berechnen x), aber nicht now (x) in .SD? Habe diesbezüglich nichts in der Dokumentation gefunden.
innen 'Funktion (x) {sum (x)/nRow (x)}', 'X' ist ein Vektor und seine '' dim' ist NULL' so dass es keine Zeilen gibt. – mt1022