我想在几个独立的数据帧中创建很多变量,然后我将这些变量组合成一个大数据帧。
每张纸都用一个字母标记(有24张),每张纸都在100-200个变量之间。我可以这样写:
a$varible1 <- NA
a$variable2 <- NA
.
.
.
w$variable25 <- NA
这可能/会变得丑陋,我想写一个循环或使用向量来完成工作。我有点时间这样做。
我基本上需要一个脚本,它允许我指定一个表单,然后只是将数字添加到它上面。
所以,
a$variable[i] <- NA
其中[i]被添加到创建的实际变量上。
答案 0 :(得分:2)
我刚从@eddi那里学到了这个巧妙的小技巧
#created some random dataset with 3 columns
library(data.table)
a <- data.table(
a1 = c(1,5),
a2 = c(2,1),
a3 = c(3,4)
)
#assuming that you now need to ad more columns from a4 to a200
# first, creating the sequence from 4 to 200
v = c(4:200)
# then using that sequence to add the 197 more columns
a[, paste0("a", v) :=
NA]
# now a has 200 columns, as compared to the three we initiated it with
dim(a)
#[1] 2 200
答案 1 :(得分:0)
我认为你真的不需要这个,虽然你似乎是出于某种原因这么认为。
也许是这样的:
a <- as.data.frame(matrix(NA, ncol=10, nrow=5))
names(a) <- paste0("Variable", 1:10)
print(a)
# Variable1 Variable2 Variable3 Variable4 Variable5 Variable6 Variable7 Variable8 Variable9 Variable10
# 1 NA NA NA NA NA NA NA NA NA NA
# 2 NA NA NA NA NA NA NA NA NA NA
# 3 NA NA NA NA NA NA NA NA NA NA
# 4 NA NA NA NA NA NA NA NA NA NA
# 5 NA NA NA NA NA NA NA NA NA NA
答案 2 :(得分:0)
如果您想要不同类型的变量:
p <- 10 # number of variables
N <- 100 # number of records
vn <- vector(mode="list", length=p)
names(vn) <- paste0("V", seq(p))
vn[1:8] <- NA_real_ # numeric
vn[9:10] <- NA_character_ # character
df <- as.data.frame(lapply(vn, function(x, n) rep(x, n), n=N))