我有一个R中的代码,通过data.frame在当时读取一行,如果符合某些条件,则更改data.frame中的一个变量的值。在伪码:如何确定给出错误的数据点?
for(i in 1:nrow(data)) {
if (conditions on data[i,]) { change value } else {do nothing}
}
当代码运行时,在某一点停止和引发以下错误消息:Error in if (condition : missing value where TRUE/FALSE needed
据我所知,该错误消息表示,在某一点,当对if
声明中的条件进行评估,结果为Na
而不是TRUE
或FALSE
。
然而,当我通过使用“存储”在R(和我假设是抛出错误的数据集的行)的i
值尝试R中的条件I得到的TRUE
答案。我是否正确理解i
的值允许我确定哪一行数据帧正在抛出错误?如果不是,我应该寻找其他方法来确定哪一行数据集导致错误?
如果'data'是一个data.frame,你通常会使用'for(i in 1:nrow(data))'。看看'暗淡(数据)'来看看你得到了什么。此外,没有** [可重现的例子](http://stackoverflow.com/a/28481250/2725969)**很难提供帮助。另外,'ifelse'可能是一种更好的方式来做你想做的事情。 – BrodieG
@BrodieG感谢您的反馈。我想我的问题是更具体地询问我是否可以使用'i'来确定data.frame的哪一行会抛出错误,而不是错误本身的性质。是这样吗?存储在R中的'i'的值是否表示代码遇到错误的行? –
是的,但请记住'data [i]'返回第i列,而不是第i行。对于你需要'data [i,]'的行。另外,请注意我上面关于'nrow'和'dim'的评论。 – BrodieG