【发布时间】:2019-04-07 04:29:23
【问题描述】:
我正在处理大量数据,但在继续我的工作之前,我想删除一列中值小于 10 的所有行。
我的 data.frame 有两列,每列有 427 行。没有运气,我试过了......
for (i in vals[, 1]) # vals is the name of my data frame
{ # I want to test the condition on the values in
the first column
if (i < 10)
{
vals <- vals[-i, ]
}
}
当我运行我的脚本时,我收到一条错误消息:“-i:一元运算符的参数无效”
我不确定它是否会有所不同(我对使用 R 还是很陌生),但我还要补充一点,这个 for 循环嵌套在一个更大的循环中。谢谢!
【问题讨论】:
-
Emily,要摆脱这一点的一点是,R 能够一次有效地处理整个向量。在这种情况下,
vals[[1]] < 10将返回logical的向量,指示哪些值满足条件。唯一缺少的(并且未在下面的答案中解决)是您的数据中存在NA;我猜any(is.na(vals[,1]))是假的,但如果它是真的,那么你需要像vals[ !is.na(vals[,1]) & vals[,1] >= 10,]这样的逻辑。 (@12b345b6b78 ...随意在您的答案中添加该约束,我觉得我在给您添油加醋:-)