我的for循环不会在r中运行

时间:2015-07-16 15:20:07

标签: r for-loop

我无法让这个循环运行。

loopLength <- length(vector_X)
i <- 1

for (x in 1:loopLength) 
  vector_Y <- Frame_X$column_a == vector_X[i]
  Frame_Y <- Frame_X[Vector_Y,]
  Frame_A <- Frame_Y$column_b == vector_X[i]
  Frame_Z <- Frame_Y[Frame_A,]
  Vector_T <- Frame_Y$column_c == Frame_Z[1,2]
  Frame_Z2 <- Frame_Y[Vector_T,]
  returnSum1[i] <- sum(Frame_Z2$column_d)

  Frame_Z3 <- Frame_Y[!(Frame_Z1),]
  returnSum2[i] <- sum(Frame_X3$column_d)`

我可以通过用一个整数替换i来运行stand_alone代码块(它只运行1到20)并交叉检查db并且结果是正确的。但是,我似乎无法迭代它。

我想我错过了一些关于集成循环的东西,但我看起来似乎无法找到它。

当我尝试将其作为for (i in 1:20)运行时,它不起作用。 代码块周围的括号内的包含或排除也不起作用。

1 个答案:

答案 0 :(得分:1)

您在for循环中定义的变量名为x,而不是i。如果不是这样,那么错误可能来自这样的事实:如果Frame_Z碰巧有0行,那么Frame_Z [1,2]就不存在了!我认为这一步骤并不十分明确。如果您发布了一个示例data.frame并说出您想要做的事情,我可以提供更多帮助。此外,如果您使用较少的步骤并且没有命名索引帧(如在Frame_A和Frame_Z1中),它将使您的代码更容易阅读。另外,我认为使用dplyr会更容易。类似的东西:

library(dplyr)
loopLength <- length(vector_X)
for(i in 1:loopLength){
    xval <- vector_X[i]
    Frame_Z <- Frame_X %>%
        filter(column_a == xval, column_b == xval)
    ...
}

我不能发布更多内容,因为我不太了解你想要做的事情。