我有一个数据框,有两个长度为5和变量的向量:
x <- seq(1:5)
y <- rep(0,5)
df <- data.frame(x, y)
z <- 10
Run Code Online (Sandbox Code Playgroud)
我需要遍历数据帧并根据与x相关的条件使用z更新y,并且我需要在每次迭代时更新z.使用for循环,我会这样做:
for (i in seq(2,nrow(df))){
if(df$x[i] %% 2 == 0){
df$y[i] <- df$y[i-1] + z
z <- z - df$x[i]
} else{
df$y[i] <- df$y[i-1]
}
}
Run Code Online (Sandbox Code Playgroud)
使用数据帧很慢并且必须使用df $ x [i]访问第i个项目效率不高,但我不确定如何对其进行向量化,因为y和z都会根据每次迭代而改变.
有没有人有关于迭代这个的最佳方法的建议?我想完全避免使用数据帧,只是使用向量来简化查找,或者使用tidyverse和purrr包使用tidyverse,但似乎没什么好容易实现的.谢谢!