小编Geo*_*rge的帖子

迭代数据帧,其中每次迭代有效地依赖于R中的前一项

我有一个数据框,有两个长度为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,但似乎没什么好容易实现的.谢谢!

iteration r vectorization purrr tidyverse

7
推荐指数
2
解决办法
606
查看次数

标签 统计

iteration ×1

purrr ×1

r ×1

tidyverse ×1

vectorization ×1