如何在`:=`下的data.table中分配动态列名?

时间:2016-11-21 06:21:46

标签: r data.table

考虑以下代码:

library(data.table)
carsDT <- data.table(cars)
carsDT[speed < 15, `:=`(paste0("col", 1)=1 paste0("col", 2)=2)]

此代码给出错误:

Error: unexpected '=' in "carsDT[speed < 15, `:=`(paste0("col", 1)="

有没有办法,在:=内,我可以使用动态列名?我知道我可以这样做:

carsDT[speed < 15, (paste0("col", 1)) := 1]
carsDT[speed < 15, (paste0("col", 2)) := 2]

此解决方案将涉及多行代码(要分配的列数为100秒)。如果我可以在单:=下完成所有作业,将会很方便。

感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

我们可以将值放在list或使用.(...),然后将其分配(:=)到新列

carsDT[speed < 15, paste0("col", 1:2) := list(1, 2)]