首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中有效地将列表列为data.frame

在R中有效地将列表列为data.frame
EN

Stack Overflow用户
提问于 2016-04-04 07:57:54
回答 1查看 906关注 0票数 1

我有一个列表( qlist ),在qlist中包含不同长度的列表(参见示例标记列表),我希望将它的选定元素(标记和question_id,跳过creation_date)转换为data.frame,其中标记是1列,对应的question_id的第二列。

代码语言:javascript
复制
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")

我通过以下代码成功地做到了这一点

代码语言:javascript
复制
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在第二列中。

代码语言:javascript
复制
> df_qst_tags
                  tag question_id
1                   r    36375667
2 parallel-processing    36375667
3                   r    36375668

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-04 08:48:44

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

代码语言:javascript
复制
> tags = lapply(qlist, "[[", "tags")
> lengths(tags)
[1] 2 1

您将取消tags列表,以获得单个标记的向量。现在提取其他元素,例如question_id,并按照

代码语言:javascript
复制
data.frame(tag=unlist(tags, use.names=FALSE),
           question_id = rep(
               vapply(qlist, "[[", character(1), "question_id"),
               lengths(tags)))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36397285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档