R: data.table count! NA pro Zeile

Ich versuche, die Anzahl der Spalten zu zählen, die keine NA für jede Zeile enthalten, und diesen Wert in eine neue Spalte für diese Zeile zu setzen.

Beispieldaten:

library(data.table)

a = c(1,2,3,4,NA)
b = c(6,NA,8,9,10)
c = c(11,12,NA,14,15)
d = data.table(a,b,c)

> d 
    a  b  c
1:  1  6 11
2:  2 NA 12
3:  3  8 NA
4:  4  9 14
5: NA 10 15

Meine gewünschte Ausgabe würde eine neue Spalte @ enthaltenum_obs enthält die Anzahl der Nicht-NA-Einträge pro Zeile:

    a  b  c num_obs
1:  1  6 11       3
2:  2 NA 12       2
3:  3  8 NA       2
4:  4  9 14       3
5: NA 10 15       2

Ich lese jetzt seit Stunden und bis jetzt ist das Beste, was ich mir einfallen ließ, das Durchlaufen von Zeilen, von denen ich weiß, dass es in R oder data.table niemals ratsam ist. Ich bin mir sicher, dass es einen besseren Weg gibt, bitte klären Sie mich auf.

Mein beschissener Weg:

len = (1:NROW(d))
for (n in len) {
  d[n, num_obs := length(which(!is.na(d[n])))]
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage