R:根据列值将数据框中的行号提取到向量中

时间:2018-12-14 01:26:05

标签: r dataframe for-loop vector extract

我正在使用R,并尝试通过将行号放入向量prac中,将我的prepareRunSwitch数据帧的“试验”列的值为负的行删除,然后将其用于提取恭维行新数据框。但是,prac向量始终返回空。下面是我的代码,不确定我缺少什么。欢迎任何帮助/建议,谢谢!

prac <- c()

for (i in 1:nrow(prepareRunSwitch)){
  if(prepareRunSwitch[i, "trial"] > 0){
    prac <- append(prac, i)
  }
  return(prac)
}

1 个答案:

答案 0 :(得分:1)

我们可以不执行循环而使用which来获取逻辑向量的行索引

which(prepareRunSwitch$trial > 0)

如果我们先提取列然后再索引,则下面的内容应该起作用

prac <- c()

for (i in 1:nrow(prepareRunSwitch)){
   if(prepareRunSwitch$trial[i] > 0){
     prac <- append(prac, i)
    }
    return(prac)
 }

作为可重复的示例

prac <- c()
for(i in 1:nrow(mtcars)) if(mtcars$carb[i] == 4) prac <- append(prac, i)
prac
#[1]  1  2  7 10 11 15 16 17 24 29

请注意,最好将1:nrow替换为seq_len(nrow(