如何遍历R中的整个数据帧/每个单元格?

时间:2019-07-26 15:48:21

标签: r loops dataframe cell operation

我需要对表中的每个单元格值执行一个for循环和一个true或false运算,如果运算返回true,则该函数将用0替换该值。但是R每次我尝试时都会抛出错误运行代码

for (i in xxxxx(a number){
   for (j in xxx(a number){
     if (y[i,j] == 0 & y[i,j] < mean(y) - ppp / sd(y)){
       y[i,j] <- NA
     }
   }
}
  

[。data.table(y,i,j)中的错误:j(内部的第二个参数   [...]是单个符号,但未找到列名“ j”。也许   您打算使用DT [,..j]。与data.frame的区别是故意的   并在常见问题解答1.1中进行了解释。

1 个答案:

答案 0 :(得分:0)

我不知道您应该怎么做mean(y)sd(y),因为y似乎是基于您的代码的数据表。

您的mean(y)会抛出错误,但是您的y[i,j]首先出错,很可能是因为您的ij没有意义。

如果您的y是全数字,则可以使用矩阵而不是data.table。在R中,向量化解决方案总是更快。

y <- as.matrix(y);

y[some condition for y] <- NA

如果不能选择向量化,则遍历单元格的方式也会很慢。使用[i, j]时,R需要花费一些时间才能找到行。您可以看看my test