首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要在R中执行data.frame的不同长度列表的列表

要在R中执行data.frame的不同长度列表的列表
EN

Stack Overflow用户
提问于 2012-10-14 02:24:20
回答 2查看 10.3K关注 0票数 8

我在SO中读到了很多关于将列表列表转换为df的答案。但是,我注意到它们的列表长度(在主要的大列表中)都是相同的。我有一个不同的案例:

代码语言:javascript
复制
h1 <- list(USA = c(10,13,17,11), RUSSIA = NULL, BRAZIL = NULL,
  CHINA = c(11,11,10,8,12), TAIWAN = c(12,9,9,11,9,12,14), CHILE = NULL)

我想把上面的列表h1转换成一个data.frame。我的预期输出应该是一个有2列的列表-- country_name,data.frame。如下所示:

代码语言:javascript
复制
country_name, list
USA    [10, 13, 17, 11]
RUSSIA NULL
BRAZIL NULL
CHINA  [11, 11, 10, 8, 12]
TAIWAN [12, 9, 9, 11, 9, 12, 14]
CHILE  NULL

我做了以下操作,但没有起作用:

代码语言:javascript
复制
do.call(rbind, h1)

它试图使所有行的列号保持一致。我不想那样做。我想看看我怎样才能在这样的情况下使用ldply。任何建议都是值得感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-14 02:33:16

这里有一种方法:

代码语言:javascript
复制
R> as.data.frame(as.matrix(h1))
                            V1
USA             10, 13, 17, 11
RUSSIA                    NULL
BRAZIL                    NULL
CHINA        11, 11, 10, 8, 12
TAIWAN 12, 9, 9, 11, 9, 12, 14
CHILE                     NULL

R> as.data.frame(as.matrix(h1))['TAIWAN', ]
$TAIWAN
[1] 12  9  9 11  9 12 14
票数 5
EN

Stack Overflow用户

发布于 2012-10-14 02:36:55

您可以将列表转换为矩阵,其中矩阵的每个元素都将是一个列表。

代码语言:javascript
复制
d1 <- data.frame(country_name=names(h1), list=matrix(h1))

也就是说,我建议不要这样做,因为它不适合R范式。大多数R函数都假定矩阵包含来自一种原子类型的元素。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12875716

复制
相关文章

相似问题

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