【问题标题】:R: Extracting row numbers from a dataframe into a vector based on column valueR:根据列值将数据帧中的行号提取到向量中
【发布时间】:2019-05-15 06:56:07
【问题描述】:

我正在使用 R 并尝试通过将行号放入向量 prac 中来删除我的 prepareRunSwitch 数据帧的“试用”列的负值行,然后我将使用该向量将补充行提取到新的数据框。但是, prac 向量总是返回空。下面是我的代码,不知道我错过了什么。欢迎任何帮助/建议,谢谢!

prac <- c()

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

【问题讨论】:

  • 您不需要循环,只需使用whichwhich(prepareRunSwitch$trial &gt; 0)
  • 欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。

标签: r dataframe for-loop vector extract


【解决方案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(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    相关资源
    最近更新 更多