【发布时间】:2021-03-23 11:02:19
【问题描述】:
Leaves<- c(2,4,6,7,8,10,11,15)
ax<- c(2,1,1,2,3,1,1,1)
bx <- c(0,0,0,0,2,0,0,1)
mydata<- data.frame(Leaves, ax, bx)
Sx<- c()
Sx[1] <- sum(x$ax)
for(i in 2:length(mydata$Leaves)){
Sx[i] <- Sx[i-1] - mydata$ax[i-1]
}
这里发生的事情是我希望 Sx 列的第一个值是 ax 列的总和。 Sx 的第二个值应该是 Sx[1]-ax[1],Sx 的第三个值应该是 Sx[2]-ax[2,依此类推。
此代码现在可以工作,但它是一个 for 循环。有谁知道一种方法可以对此 for 循环进行矢量化替代?我已经研究了很多 Dplyr lag 和 data.table shift 函数,但我不确定如何让它们工作。
【问题讨论】:
标签: r for-loop vectorization