r中的动态名称的数据表问题

时间:2016-11-22 20:32:58

标签: r data.table

我构建了一个列(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"]

它做了它应该做的事。

1 个答案:

答案 0 :(得分:0)

在对相关问题进行更多浏览之后,我添加了

data.table::setkeyv(dt.commod, prodYears)

for循环之前。我不明白为什么会这样,但确实如此。