考虑以下代码:

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/

10-11 02:43