首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重复data.frame N次的行

重复data.frame N次的行
EN

Stack Overflow用户
提问于 2012-01-06 04:53:07
回答 8查看 96.5K关注 0票数 101

我有以下数据框架:

代码语言:javascript
复制
data.frame(a = c(1,2,3),b = c(1,2,3))
  a b
1 1 1
2 2 2
3 3 3

我想重复这几行。例如,在这里,行被重复3次:

代码语言:javascript
复制
  a b
1 1 1
2 2 2
3 3 3
4 1 1
5 2 2
6 3 3
7 1 1
8 2 2
9 3 3

在R中有一个简单的函数可以这样做吗?谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2012-01-06 05:23:35

编辑:更新到一个更好的现代R答案。

您可以使用replicate(),然后将结果重新组合在一起。行名将自动更改为从1:nrow运行。

代码语言:javascript
复制
d <- data.frame(a = c(1,2,3),b = c(1,2,3))
n <- 3
do.call("rbind", replicate(n, d, simplify = FALSE))

一种更传统的方法是使用索引,但是这里的行名更改并不是很整洁(但更有信息):

代码语言:javascript
复制
 d[rep(seq_len(nrow(d)), n), ]

下面是对上面的改进,前两个使用purrr函数式编程,惯用purrr:

代码语言:javascript
复制
purrr::map_dfr(seq_len(3), ~d)

和不那么惯用的咕噜声(相同的结果,虽然更尴尬):

代码语言:javascript
复制
purrr::map_dfr(seq_len(3), function(x) d)

最后,通过索引而不是列表使用dplyr应用

代码语言:javascript
复制
d %>% slice(rep(row_number(), 3))
票数 180
EN
查看全部 8 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8753531

复制
相关文章

相似问题

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