我有以下数据框架:
data.frame(a = c(1,2,3),b = c(1,2,3))
a b
1 1 1
2 2 2
3 3 3我想重复这几行。例如,在这里,行被重复3次:
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中有一个简单的函数可以这样做吗?谢谢!
发布于 2012-01-06 05:23:35
编辑:更新到一个更好的现代R答案。
您可以使用replicate(),然后将结果重新组合在一起。行名将自动更改为从1:nrow运行。
d <- data.frame(a = c(1,2,3),b = c(1,2,3))
n <- 3
do.call("rbind", replicate(n, d, simplify = FALSE))一种更传统的方法是使用索引,但是这里的行名更改并不是很整洁(但更有信息):
d[rep(seq_len(nrow(d)), n), ]下面是对上面的改进,前两个使用purrr函数式编程,惯用purrr:
purrr::map_dfr(seq_len(3), ~d)和不那么惯用的咕噜声(相同的结果,虽然更尴尬):
purrr::map_dfr(seq_len(3), function(x) d)最后,通过索引而不是列表使用dplyr应用
d %>% slice(rep(row_number(), 3))https://stackoverflow.com/questions/8753531
复制相似问题