【发布时间】:2019-02-01 11:47:46
【问题描述】:
如何提取列表的多个数据框的特定列,例如所有 dfs 的第 8 列,并将提取的列组合成一个新的数据框。
我使用的 for 循环没有给我想要的输出。我更喜欢使用 lapply() 函数而不是 for 循环。你知道我该怎么做吗?
new_df <- data.frame()
for(i in 1:length(list_of_dfs)){
col_8 <- list_of_dfs[[i]][8]
new.df[i] <- col_8
}
View(df)
【问题讨论】:
-
你想要的输出是什么?一个大的长data.frame或跨页面运行的多个列?
do.call(rbind, lapply(list_of_dfs, `[`, 8))得到你想要的吗? -
感谢您的回复。我想有一个所有列彼此相邻的表。我试过你的命令,但它不起作用。我使用 typeof() 并意识到列表中的表是列表而不是数据框。也许这就是你的命令对我不起作用的原因。我正在尝试这个 for 循环,但它只将最后一个表中的列绑定到我的主数据框。 link 斜体 粗体
for(i in 1:3){ df <- data.frame(df.list[i]) d <- df[10] new.df <- cbind(d, cufflinks.df) } -
这应该没什么区别 -
data.frame在引擎盖下是list- 请参阅typeof(data.frame(a=1:3))。如果您可以提供一个代表您的实际数据的示例,我相信我可以给您一些工作代码。例如:list_of_dfs <- rep(list(data.frame(a=1:3,b=2:4)),3); data.frame(lapply(list_of_dfs, `[`, 2))或类似的东西应该接近你想要的。
标签: r list for-loop dataframe lapply