我试图遍历两个向量并将一个公式应用于数据,但我无法弄清楚如何做我想做的事情......
基本上这里有一些样本数据......我需要引用两个向量...
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)
这就是我想申请的格式......这将是第一次......
(1+v2[2])^v1[2] / (1+(v2[1]^v1[1]))
第二次迭代将是......
(1+v2[3])^v1[3] / (1+(v2[2]^v1[2]))
所以我试图这样做,但我无法弄清楚如何迭代矢量索引...我正在尝试沿着这条线,但我无法通过计数器增加索引,例如,i。 ..
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 :(得分:1)
您可以使用res <- (1+v2[-1])^v1[-1] / (1+(v2[-17]^v1[-17]))
基本上它使用长度为16的向量(v1和v2减去第一个和最后一个元素)并利用R的自然向量处理。