首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >展平数据框

展平数据框
EN

Stack Overflow用户
提问于 2012-02-27 23:11:44
回答 2查看 17.2K关注 0票数 16

我有一个嵌套的数据框

代码语言:javascript
复制
test <- structure(list(id = c(13, 27), seq = structure(list(
`1` = c("1997", "1997", "1997", "2007"),
`2` = c("2007", "2007", "2007", "2007", "2007", "2007", "2007")), 
.Names = c("1", "2"))), .Names = c("penr", 
"seq"), row.names = c("1", "2"), class = "data.frame")

我想要第二列中所有值的列表,即

代码语言:javascript
复制
result <- c("1997", "1997", "1997", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007")

有什么简单的方法可以做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-27 23:15:35

下面这行代码可以做到这一点:

代码语言:javascript
复制
do.call("c", test[["seq"]])

或等效的:

代码语言:javascript
复制
c(test[["seq"]], recursive = TRUE)

或者甚至是:

代码语言:javascript
复制
unlist(test[["seq"]])

这些函数的输出为:

代码语言:javascript
复制
    11     12     13     14     21     22     23     24     25     26     27 
"1997" "1997" "1997" "2007" "2007" "2007" "2007" "2007" "2007" "2007" "2007" 

要删除字符向量上方的名称,请对生成的对象调用as.character

代码语言:javascript
复制
> as.character((unlist(test[["seq"]])))
 [1] "1997" "1997" "1997" "2007" "2007" "2007" "2007" "2007" "2007" "2007"
[11] "2007"
票数 16
EN

Stack Overflow用户

发布于 2012-02-28 00:05:56

这不是一个答案,而是对Paul答案的后续/补充:

在任何次数的迭代中,c方法的性能都是最好的。然而,随着我将迭代次数增加到100000次,unlist从最差的变成了非常接近c方法的。

1000 iterations

代码语言:javascript
复制
     test replications elapsed relative user.self sys.self user.child sys.child
2       c         1000    0.04 1.333333      0.03        0         NA        NA
1 do.call         1000    0.03 1.000000      0.03        0         NA        NA
3  unlist         1000    0.23 7.666667      0.04        0         NA        NA

100,000次迭代

代码语言:javascript
复制
     test replications elapsed relative user.self sys.self user.child sys.child
2       c       100000    8.39 1.000000      3.62        0         NA        NA
1 do.call       100000   10.47 1.247914      4.04        0         NA        NA
3  unlist       100000    9.97 1.188319      3.81        0         NA        NA

再次感谢你的分享,Paul!

在运行R 2.14.1的win 7计算机上使用rbenchmark执行基准测试

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

https://stackoverflow.com/questions/9467321

复制
相关文章

相似问题

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