考虑以下代码:
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秒)。如果我可以在单:=
下完成所有作业,将会很方便。
感谢任何帮助。
答案 0 :(得分:4)
我们可以将值放在list
或使用.(...)
,然后将其分配(:=
)到新列
carsDT[speed < 15, paste0("col", 1:2) := list(1, 2)]