【发布时间】:2015-10-12 21:05:55
【问题描述】:
我有一个包含一列字符的数据框,其余列由整数组成。我想做的是检查特定列(5)的值,如果它们> 1000,则将该值插入到新创建的向量中。到目前为止,我已经提出了这个解决方案,但是我在 if 语句中遇到了一个错误。任何帮助将不胜感激。
D 是数据框
greaterthan1000 <- vector ('numeric',length = nrow(D))
for (i in 1:nrow(D)){
if(D[[i]][[5]]>1000){
greaterthan1000 <- c(D[[i]][[5]])
}
}
错误:
if (D[[i]][[5]] > 1000) { 中的错误:缺少 TRUE/FALSE 的值 需要
另外:
警告消息:在 Ops.factor(B[[i]][[5]], 1000) 中:'>' 没有意义 对于因素
【问题讨论】:
-
greaterthan1000 = D[[5]][D[[5]] > 1000]可以工作,不需要 for 循环。在您的代码中,将D[[i]][[5]]替换为D[[5]][i]。 -
不过,鉴于您的警告,您可能还想检查课程。如果
class(D[[5]])是一个因素,您可能首先需要D[[5]] = as.numeric(as.character(D[[5]]))。 -
好的,给我一秒钟,然后检查一下。不过提前谢谢
-
我决定使用全数字数据框,因为我认为我的教授搞砸了练习(在那之后发现了很多错误)。如果这不是一个错误,我会再次提出这个问题。谢谢