如何将N个命名的空数据帧初始化为R中的列表?

时间:2015-05-18 14:39:35

标签: r dataframe

我想初始化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数据框或矩阵也可以做同样的事情。

2 个答案:

答案 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循环,我只会使用它。