【发布时间】:2023-04-03 12:59:01
【问题描述】:
我有一个包含多个 data.frames 的列表。我想从列表中选择每个第 n 个 data.frame 并将它们组合成一个可以写入 csv 的 data.frame。
这里是一个列表结构的例子:
one.title <- data.frame(id = '1a', title = 'first title')
one.author <- data.frame(first_name = c('Susan', 'Alice'),
last_name = c('Smith', 'Johnson') )
second.title <- data.frame(id = '2b', title = 'second_title')
second.author <- data.frame(first_name = c('Sarah', 'Mary'),
last_name = c('Davis', 'Proctor') )
one.list <- list()
one.list[[1]]$title <- one.title
one.list[[1]]$author <- one.author
one.list[[2]]$title <- second.title
one.list[[2]]$author <- second.author
这是我当前为“作者”字段生成单个数据框的解决方案:
build_author_table <- function(result.l){
list_to_df <- function(i){
x <- result.l[[i]]$author
return(x)
}
authors_df_l <-(lapply(1:length(result.l), FUN = list_to_df))
authors_df <- do.call("rbind", lapply(authors_df_l, as.data.frame))
return(authors_df)
}
这会产生我想要的输出:
first_name last_name
1 Susan Smith
2 Alice Johnson
3 Sarah Davis
4 Mary Proctor
但正如您可能想象的那样,当扩展到 data.frame 中具有更大文本字段的数千条记录时,它会非常缓慢。
谁能建议一种更快、更有效的方法来生成最终的 data.frame?
【问题讨论】:
标签: r performance