我需要对表中的每个单元格值执行一个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中进行了解释。
答案 0 :(得分:0)
我不知道您应该怎么做mean(y)
和sd(y)
,因为y
似乎是基于您的代码的数据表。
您的mean(y)
会抛出错误,但是您的y[i,j]
首先出错,很可能是因为您的i
或j
没有意义。
如果您的y
是全数字,则可以使用矩阵而不是data.table
。在R中,向量化解决方案总是更快。
y <- as.matrix(y);
y[some condition for y] <- NA
如果不能选择向量化,则遍历单元格的方式也会很慢。使用[i, j]
时,R需要花费一些时间才能找到行。您可以看看my test。