【问题标题】:How to loop through entire dataframe/every cell in R?如何循环遍历 R 中的整个数据帧/每个单元格?
【发布时间】:2019-12-04 23:49:05
【问题描述】:

我需要对表中的每个单元格值执行一个 for 循环和一个真或假操作,如果操作返回真,那么该函数将用 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 的这种差异是故意的 并在 FAQ 1.1 中解释。

【问题讨论】:

  • xxxxxxxx 函数是什么?此外,R 不会接受 a number 作为输入,因此这可能是您运行的代码。如果您的示例是可重现的并且您显示了预期的输出,则更容易回答。

标签: r loops dataframe cell operation


【解决方案1】:

我想知道您应该如何处理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

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    相关资源
    最近更新 更多