R循环在列表中命名数据帧

时间:2014-02-04 10:26:15

标签: r

我有两个包含数据的数据框

seed(1234)
dfX <- data.frame(matrix(sample(1:100, 25), 20, 5), row.names = paste("AB", sample(1:20, replace=FALSE), sep=""))
colnames(dfX) <- c("G", "H", "I", "J", "K")
dfY <- data.frame(matrix(sample(1:100, 25), 20, 5), row.names = paste("AB", sample(1:20, replace=FALSE), sep=""))
colnames(dfY) <- c("G", "H", "I", "J", "K")

我还有

中数据框的名称
asNames <- c("Test1", "Test2")

现在我想创建一个包含这两个数据帧的列表LL,但是这样我可以使用LL $ Test1给我数据帧dfX。我当然可以使用

list("Test1" = dfX, "Test2" = dfY)

但这不是动态的,因为我有可变数量的数据帧。我曾希望这样的东西能起作用

list(asNames[1] = dfX, asNames[2] = dfY)'

但这会给出错误消息

  

错误:“list(asNames [1] =”

中的意外'='

同样list(dfX, dfY)没有给我所需的结果,因为名字(LL)= NULL,我只能通过LL [[1]]来检索dfX。

这是问题的基本部分。另一个方面是当我有大量的数据框,其名称存储在vNames中。如何将数据框添加到列表LL2中,并使用vNames中的名称。

我想这就像是

LL2 <- lapply(seq_along(vNames), function(x, LL, vN){c(LL, vN[x] = get(vN[x])}, LL = LL2, vN = vNames)  

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

LL <- setNames(list(dfX, dfY), asNames)

会做到这一点。