2017-04-20 85 views
0

我試圖環和應用公式的數據,但我無法弄清楚如何做我想做的事......通過的R矢量循環通過兩個向量應用公式

基本上這裏是一些樣本數據...兩個向量,我需要引用...

v1 <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17) 
v2 <- c(0.01,0.06,0.11,0.16,0.21,0.26,0.31,0.36,0.41,0.46,0.51,0.56,0.61,0.66,0.71,0.76,0.81) 

這這是formaula我想申請......這將是第一個實例...

(1+v2[2])^v1[2]/(1+(v2[1]^v1[1])) 

第二次迭代將b è...

(1+v2[3])^v1[3]/(1+(v2[2]^v1[2])) 

所以我想這樣做,但我無法弄清楚如何遍歷...我沿着這個線路努力向量索引,但我不能增加索引通過櫃檯,例如,我...

for (i in seq_along(v1) { 
    i <- 0 
    res[i] <- ((1+v2[2+i])^v1[2+i]/(1+(v2[1+i]^v1[1+i])) 
    i <- i+1 
} 

通過循環我會得到下面的輸出會後...

> res 
[1] 1.112475 1.217187 1.323924 1.432501 1.542753 1.654534 1.767715 1.882178 1.997821 2.114550 2.232280 2.350938 2.470454 2.590767 2.711821 2.833564 

我已經做了很多搜索的,但我來了空白, 有什麼建議麼?

+0

你爲什麼要改變循環內的'i'? – ahly

+0

我正在嘗試迭代矢量索引。 – antimuon

+0

'我在seq_along(v1)'這將遍歷向量索引。你正在初始化循環內的'i < - 0'。所以當你評估公式時,你的我一直都是零。在另一個註釋中,R的索引從1開始,而不是0. – ahly

回答

1

可以與res <- (1+v2[-1])^v1[-1]/(1+(v2[-17]^v1[-17]))

爲此一氣呵成基本上,這使用長度爲16的矢量(v1和v2減去第一和最後一個元素),並以R的自然矢量處理的優點。

+0

這是一個優雅的解決方案!比我想要做的更簡單!謝謝。 – antimuon