我想生成一个包含许多列的数据表,并自动生成名称,例如:
data.table(paste0("A",10:24)=1:15)
或
data.table(paste0("A",10:24)=rep(runif(100), 15)
但是我收到了这个错误:
错误:“data.table”中的意外“=”(paste0(“A”,10:24)=“
我该怎么做?
答案 0 :(得分:2)
有多种方法可以做到这一点。这是三个。首先创建表,然后设置名称。或者,创建一个命名列表并将其强制转换为数据表。
setnames(as.data.table(as.list(1:15)), paste0("A", 10:24))[]
# A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23 A24
# 1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
do.call(data.table, setNames(as.list(1:15), paste0("A", 10:24)))
# A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23 A24
# 1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
as.data.table(setNames(as.list(1:15), paste0("A", 10:24)))
# A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23 A24
# 1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## just for fun ...
fread(paste(c(paste0("A", 10:24), "\n", 1:15), collapse = " "))
# A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23 A24
# 1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15