【发布时间】:2020-09-13 16:30:13
【问题描述】:
我有一个data.table 有很多列。有 4 列我想用 0 替换 NA。
我有一个可行的解决方案:
claimsMonthly[is.na(claim9month),claim9month := 0
][is.na(claim10month),claim10month := 0
][is.na(claim11month),claim11month := 0
][is.na(claim12month),claim12month := 0]
但是,这是相当重复的,我想通过使用循环来减少这种情况(但不确定这是否是最聪明的想法?):
for (i in 9:12){
claimsMonthly[is.na(paste0("claim", i, "month")), paste0("claim", i, "month") := 0]
}
当我运行这个循环时,什么也没有发生。我想这是由于paste0() 返回"claim12month" 的约定,所以我得到in.na("claim12month")。结果是FALSE,尽管我的数据中有NA。我猜这与引号有关?
这不是我第一次遇到使用paste0() 或使用data.table 运行循环的问题,所以我必须在这里遗漏一些重要的东西。
任何想法如何解决这个问题?
【问题讨论】:
标签: r loops data.table