Wie erstelle ich eine for-Schleife in R für diese eigentümliche Berechnung?
Ich kann mit dieser (anscheinend) einfachen Art von Operation nichts anfangen:
Gegeben diese zwei verschiedenen Datenrahmendf(A)
(nrow = 10, ncol = 3) unddf(B)
(nrow = 3, ncol = 3)
df(A) df(B)
col1 col2 col3 col1 col2 col3
1 2 4 1 4 5
3 5 7 2 7 7
5 7 6 3 9 8
6 9 5.9
9 11 8
4.5 5.5 7.9
21 6.7 13.6
3.5 5 6
6 7.9 1
67 4 2
Ich möchte gerne
multiplizieren Sie jeden Wert der Spalten in df (A) mit denen von df (B) der entsprechenden Spalteund addieren Sie dann drei aufeinanderfolgende Ergebnisse ab jeder Zeile.Lassen Sie mich Ihnen ein Beispiel geben
A[1,1]*B[1,1] + A[2,1]*B[2,1] + A[3,1]*B[3,1]= 1*1+3*2+5*3= 22 # first expected result
A[2,1]*B[1,1] + A[3,1]*B[2,1] + A[4,1]*B[3,1]= 3*1+5*2+6*3 = 31 # second expected result
A[3,1]*B[1,1] + A[4,1]*B[2,1] + A[5,1]*B[3,1]= 5*1+6*2+9*3 = 44 # third expected result
...
A[8,1]*B[1,1] + A[9,1]*B[2,1] + A[10,1]*B[3,1]= 3.5*1+6*2+67*3 = 216.5 # last expected result
und so weiter ab jedem Wert jeder Spalte vondf(A)
bis zum letztmöglichen Triplett.
Ich habe es mit diesem @ versucfor
Schleifencode:
temp <- rep(NA,3)
my_matrix <- matrix(0,ncol=ncol(A),nrow=nrow(A))
for (i in 1:nrow(A)){
for (j in 1:3){
temp(j) <- A[i+j-1,]*B[i+j-1,]
}
my_matrix(i) <- sum(temp)
}
aber R antwortet
Error in sum(temp) : invalid 'type' (list) of argument
In addition: There were 3 warnings (use warnings() to see them)
> warnings()
1: In 1:dim(A) : numerical expression has 2 elements: only the first used
2: In temp[j] <- A[i + (j - 1), ] * B[i + (j - 1), ] :
number of items to replace is not a multiple of replacement length
Vielen Dank im Voraus Best
Anna