r数据表使用`:=`表示法,使用在内部代码中创建的列名称出错

时间:2017-02-27 17:12:30

标签: r data.table

这里有一些不起作用的代码。我们的想法是第1步 - 更新列,第2步 - 添加新列,第3步 - 使用新列更新现有列。

library(data.table)
ethanolKcals <- 6.9
ethanol.share.beer <- .04
dt.nutrients <- data.table(carbohydrate_g = runif(10), energy_kcal = runif(10), bevname = c("beer", "wine", "spirits"))
dt.nutrients[bevname == "beer", `:=`(
  carbohydrate_g = carbohydrate_g + 100 * ethanol.share.beer,
  kcals.ethanol_g = ethanolKcals * ethanol.share.beer,
  energy_kcal = energy_kcal + kcals.ethanol_g
)]

看来data.table在开始第3步之前没有完成第2步。我可以通过将第3步移到新语句(例如

)来解决这个问题。
dt.nutrients[bevname == "beer",energy_kcal := energy_kcal + kcals.ethanol_g]

但是想知道是否有更清洁的解决方案。

0 个答案:

没有答案