【问题标题】:How do I replace zeroes in multiple variable dataframes within a for loop?如何在 for 循环中替换多个变量数据帧中的零?
【发布时间】:2017-12-09 18:40:27
【问题描述】:

所以我有 1,000 个数据帧要使用 R 中的 FOR 循环进行处理,假设它们被命名为 DF1 到 DF1000。我需要将数据框中的所有 0 值替换为 1。我试着这样写。

for (i in 1:1000){
eval(as.symbol(paste0("DF","i")))[eval(as.symbol(paste0("DF","i")))==0]<-1
}

这会带来一个错误(“找不到 eval

提前致谢, 阿尔沃

【问题讨论】:

  • 最好的办法是将所有数据帧放入list,然后是lapply(list, function(x) replace(x, x == 0, 1))
  • 感谢@Rich Scriven。一个问题。假设这只是我对这 1000 个数据帧所做的 10 或 20 件事情中的第一件。这是否意味着我必须在 For 循环之外的其他 19 件事之前执行此操作?

标签: r for-loop replace eval assign


【解决方案1】:

一种方法是在全局环境中将assign 每个字符值DF 转换为一个新的DF,使用基本replace 函数。

for (i in 1:1000){
      assign(paste0("DF", i),
             replace(eval(parse(text = paste0("DF", i))), eval(parse(text = paste0("DF", i))) == 0, 1),
             envir = .GlobalEnv)
    }

这类似于for 循环之外的replace(DF,DF == 0, 1)

【讨论】:

  • 谢谢@HNSKD。我非常喜欢这种方法,因为我可以在同一个循环中做到这一点。投反对票的人能否解释为什么不应该使用它?
猜你喜欢
  • 2021-03-19
  • 1970-01-01
  • 2021-09-24
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多