R创建一个具有循环结构的向量

时间:2011-11-19 21:36:59

标签: r

我有一个列表listDFs,其中每个元素都是一个数据框。每个数据框具有不同的行数和相同的列数。

我应该从 listDFs [[i]] $ Name 开始创建一个向量,从列表中提取所有 i 元素。

我想用一个循环:

vComposti <- c()
for(j in 1:10){vComposti <- c(listDFs[[j]]$Name)}

但结果是一个只包含列表第一级( listDFs [[1]] $ Name )的向量。

哪里错了?你有什么建议吗?

1 个答案:

答案 0 :(得分:6)

你遇到的问题是:

vComposti <- c(listDFs[[j]]$Name)

每次循环播放时,您都重新分配一个新值vComposti覆盖之前的值。

通常,最好预先分配矢量并按元素填充元素:

vComposti <- rep(NA, 10)
for(j in 1:10){
    vComposti[j] <- c(listDFs[[j]]$Name)
}

但我也不清楚你对结果的期望是什么。您创建了一个向量,但看起来您正试图在向量的每个元素中存储整个数据框列。如果是这种情况,您实际上可能正在寻找一个列表的结果:

vComposti <- vector("list",10)
for(j in 1:10){
    vComposti[[j]] <- c(listDFs[[j]]$Name)
}

另一个更复杂的选项可能是使用lapply

lapply(listDFs,FUN = "[","Name")
相关问题