我构建了一个列(dt.commod
)的向量,其中包含一些我想要更改的值(c("-", "...", "0 0")
)为0.我认为以下代码的某些变体可以起作用(prodYears[j]
,get(prodYears[j])
),但没有一个。
dt.commod <- data.table::as.data.table(openxlsx::read.xlsx(filePath, colNames = TRUE, cols = NULL,
sheet = commodName))
prodYears <- c("prod_qty_2011", "prod_qty_2012", "prod_qty_2013")
for (j in 1:length(prodYears)) {
dt.commod[get(prodYears[j]) %in% c("-", "...", "0 0"), prodYears[j] := "0" ]
}
如果我直接运行列名,如
dt.commod[prod_qty_2011 %in% c("-", "...", "0 0"), prod_qty_2011 := "0"]
它做了它应该做的事。
答案 0 :(得分:0)
在对相关问题进行更多浏览之后,我添加了
data.table::setkeyv(dt.commod, prodYears)
在for
循环之前。我不明白为什么会这样,但确实如此。