考虑以下代码:
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 为单位)。如果我可以在一个
:=
下完成所有任务,那将很方便。任何帮助表示赞赏。
最佳答案
我们可以将值放在 list
中或使用 .(...)
然后将( :=
)它分配给新列
carsDT[speed < 15, paste0("col", 1:2) := list(1, 2)]
关于r - 如何在 `:=` 下的 data.table 中分配动态列名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40713949/