我想初始化N个命名的空数据框,每个数据框中有X行和Y列,并将它们放在一个列表中。稍后我将通过添加计算向量来填充它们。这是我所知道的一个新手问题,但是如何做到这一点呢?例如:
my.names <- c("G", "H", "J")
N <- 3
my.list <- ??? ## how?
(根据回复编辑...)我采用这种方法的原因是我有一个大循环,每次循环都会创建N个向量。我需要在每次迭代时保存这些结果。我计划做类似的事情:
for(i in 1:N) my.list[[i]] <- my.vec[i]
循环中的每个传递。 3D数据框或矩阵也可以做同样的事情。
答案 0 :(得分:7)
也许你想要初始化一个三维的array
?
myarr <- array(,dim=c(3,5,10))
for (j in 1:5) for (k in 1:10) myarr[,j,k] <- rnorm(3)
空data.frames列表。我认为没有充分理由初始化data.frames列表,但是这里是如何完成的:
data.frame()
创建“空”data.frame:
setNames(replicate(3,data.frame()),my.names)
# $G
# data frame with 0 columns and 0 rows
# $H
# data frame with 0 columns and 0 rows
# $J
# data frame with 0 columns and 0 rows
包含行和列的data.frame必须包含一些值,例如NA
:
nr <- 4
nc <- 4
ndf <- length(my.names)
setNames(replicate(ndf,as.data.frame(matrix(,nr,nc)),simplify=FALSE),my.names)
答案 1 :(得分:0)
您可以执行以下操作来创建空列表:
my.list = list("G" = NULL, "H" = NULL, "J" = NULL)
但是,如果我在做if语句或for循环,我只会使用它。