Mam inny problem w R. Muszę połączyć cztery wektory w jeden wektor. Wyobraź sobie cztery wektory o tej samej długości i chciałbym połączyć jak: pierwszy element wektora a pomnożyć przez pierwszy element wektora b plus pierwszy element wektora c pomnożyć przez pierwszy element wektora d.
Oto, co próbowałem:
x<-rep(5,5)
a<-seq(1,5,1)
c<-rep(1,5)
d<-rep(2,5)
div<-NULL
for(i in 1:5){
div[i]<-x[i]*a[i]+c[i]*d[i]
div<-rbind(div[i])
}
div
[,1]
[1,] 27
Naprawdę myślę, że wynik tej pętli powinien być wektorem, ale mój wynik to tylko liczba. Co ja robię źle?
Odpowiedzi:
2 dla odpowiedzi № 1Tak, div<-rbind(div[i])
jest źle, nie powinno być w ogóleponieważ zastępuje wszystkie wcześniej wyliczone dane. Jeśli ją usuniesz, wynik będzie prawdopodobnie poprawny, ale możesz zamiast tego wykonać wektoryzację i nie potrzebujesz pętli, na przykład:
div <- a * x + c * d
Spowoduje to wykonanie obliczeń na każdym zestawie wartości tych 4 wektorów; w rezultacie otrzymasz nowy wektor z tym, co chciałeś osiągnąć.