繁体   English   中英

R中的data.frame列表列表

[英]list of lists into data.frame in R efficiently

我有一个列表列表(qlist),qlist中的列表有不同的长度(参见示例 - 标签列表),我想将它的选定元素(tags和question_id,skip creation_date)转换为data.frame,其中标签是1列,对应的question_id的第二列。

qlist <- list()

qlist[[1]] <- list(tags = list( "r", "parallel-processing"), creation_date = "1459613802",
question_id = "36375667")
qlist[[2]] <- list(tags = list( "r"), creation_date = "1459613803", question_id = "36375668")

我已设法使用以下代码执行此操作

library(plyr)
df_qst_tags <- ldply(qlist, function(x){   as.data.frame(cbind(tag = unlist(x$tags), question_id = x$question_id)) }, .progress = "win")

结果如预期:第一列中的标签,第二列中有相应的question_id。

> df_qst_tags
                  tag question_id
1                   r    36375667
2 parallel-processing    36375667
3                   r    36375668

不幸的是我的qlist非常大,我的代码太慢了。 如何以更有效的方式重写解决方案?

提取标签并找到它们的几何体

> tags = lapply(qlist, "[[", "tags")
> lengths(tags)
[1] 2 1

您将取消tags以获取单个标记的向量。 现在提取其他元素,例如,question_id,并通过标签几何,沿着线条复制每个元素

data.frame(tag=unlist(tags, use.names=FALSE),
           question_id = rep(
               vapply(qlist, "[[", character(1), "question_id"),
               lengths(tags)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM