正如评论中所指出的,此问题适用于data.frame
以及data.table
。
paste
无法直接在data.table()
中使用:
> data.table(paste(hello)=c(1,2),paste(world)=c(3,4))
Error: unexpected '=' in "data.table(paste(hello)="
This Question通过将变量名称预分配给变量并在现有pasted
中创建新变量时使用该变量来处理data.table
的变量名称:
y1 <- paste0("popYears", ii+1)
dt[, (y1) := eval(y0)*growthRate]
但是,在创建新的data.table
:
> name1 <- paste("hello")
> name2 <- paste("world")
> data.table((name1)=c(1,2), (name2)=c(3,4))
Error: unexpected '=' in "data.table((name1)="
这是故意的吗?有什么方法可以解决这个问题吗?
主要问题是:在创建data.table
时如何使用粘贴来指定变量名称?
是的解决方案,它在创建data.table
后分配名称,但这需要许多其他代码行:
> name1 <- paste("hello")
> name2 <- paste("world")
> DT <- data.table(name1=c(1,2), name2=c(3,4))
> setnames(DT, "name1", name1)
> setnames(DT, "name2", name2)
> DT
hello world
1: 1 3
2: 2 4