13 Stimmen

Summe von zwei Listen mit Listen in R

Gibt es einen einfachen Weg, um eine einfache Berechnung in einer Liste von Listen durchzuführen?

x <- list(a=list(1:4),b=list(1:6))
y <- list(a=list(1:4),b=list(1:6))

Wenn ich versuche:

x+y

Erhalte ich den Fehler: Error in x + y : nicht-numerisches Argument für binären Operator

X und y sind gleich lang und enthalten nur Ganzzahlen. Mit einer Matrix ist es möglich y+x zu berechnen, gibt es eine Möglichkeit dies für Listen mit Listen zu tun?

10voto

Ricardo Saporta Punkte 53183

Unter der Annahme, dass jede Liste die gleiche Struktur hat, können Sie mapply wie folgt verwenden

  mapply(function(x1, y1) x1[[1]]+y1[[1]], x, y)

10voto

agstudy Punkte 116600

Sie können lapply verwenden, um gleichzeitig durch 2 Listen zu gehen.

 lapply(seq_along(x),function(i)
         unlist(x[i])+unlist(y[i]))

[[1]]
a1 a2 a3 a4 
 2  4  6  8 

[[2]]
b1 b2 b3 b4 b5 b6 
 2  4  6  8 10 12 

Wenn x und y nicht die gleiche Länge haben, können Sie dies tun :

 lapply(seq_len(min(length(x),length(y)),function(i)
         unlist(x[i])+unlist(y[i]))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X