2016-11-21 2 views
-1

Ich habe zwei Listen. Die erste (List1) besteht aus 126 Elemente, von denen jedes ein Datenrahmen mit 240 Beobachtungen von 13 Variablen, etwa so:Subtrahieren von Listen mit verschiedenen Datenstrukturen

List1   Large List (126 elements, 3.2 Mb) 
:'data.frame': 240 obs. of 13 variables 
..$X1: num [1:240] 1.5 2.3 6.4 3.3 ... 
..$X2: num [1:240] 3.8 9.4 0.4 6.4 ... 
................................................. 
:'data.frame': 240 obs. of 13 variables 
..$X1: num [1:240] 2.6 0.9 0.5 3.7 ... 
..$X2: num [1:240] 4.9 5.5 5.6 3.1 ... 
................................................. 

List2 besteht ebenfalls aus 126 Einzelteile, aber dieses Mal nur 1 Beobachtung von 13 Variablen , wie folgt:

List2   List of 126 
: num[1, 1:13] 5.5 4.2 6.3 9.2 ... 
: num[1, 1:13] 2.1 1.4 7.7 3.9 ... 
................................................. 

Ich versuche einfach, List2 von List1 zu subtrahieren. Mit anderen Worten, ich möchte die 13 Zahlen in jedem Element von Liste2 von allen 240 Zeilen in jedem Element von Liste1 subtrahieren. Dies sollte mir 126 neue Einträge in einer Liste geben, mit 240 Beobachtungen von 13 Variablen.

Ich habe versucht:

ANOM=Map(function(x,y) x-y, List1, List2) 

und dies funktioniert, aber es nicht das richtige Ergebnis geben, da es die richtigen Spalten von List2 aus den richtigen Spalten von List1 nicht löschen ist. Gibt es etwas Einfaches, was ich hier falsch machen könnte?

+0

Ich denke, Sie haben gehört, wie reproduzierbare Beispiele sind auf dieser Seite hilfreich, aber hier ist eine andere Referenz sowieso: http://stackoverflow.com/questions/5963269/how-to-make-a-great- r-reproduzierbar-Beispiel/28481250 # 28481250 – Frank

+0

Entschuldigung. Ich habe versucht, diese Frage so klar wie möglich zu stellen, fand es aber schwierig. Ich werde die Frage löschen, die ich denke. –

+0

Ich denke, die Frage ist anständig, aber Sie müssen klären, was Sie mit _subtract List2 aus List1_ meinen. Meinst du so etwas wie 'liste (Liste1 [[1]] - Liste2 [[0]], Liste1 [[2]] - Liste2 [[2]], ..., Liste1 [[126]] - Liste2 [[ 126]]) '? oder 'für jede Zeile in Liste2 Liste1 [1] - Zeile ...'? Teilen Sie auch Dummy-Daten. – Abdou

Antwort

0

Sehen Sie, ob das funktioniert?

list3=list() 
for(i in 1:length(list1))list3[[i]]=list1[[i]]-rep(1,240)%*%list2[[i]] 
str(list3) 
+0

Danke für den Kommentar - leider liefert das genau die gleiche Ausgabe wie die Map-Funktion, die ich in meinem Beispiel skizziert habe. –

+0

versuchen Sie die Bearbeitung und sehen, ob es funktioniert? – Robert

+0

Dank @Robert - diese Lösung macht den Trick. Ich denke, das Wiederholen der zweiten Liste war notwendig, damit die Listen aus gleich strukturierten Datenrahmen bestehen. –

Verwandte Themen