我怎样才能重复data.frame?

Gre*_*gor 4 r dataframe

一次重复data.frame很容易

mt2 <- rbind(mtcars, mtcars)
Run Code Online (Sandbox Code Playgroud)

但一般来说,这是一种类似R的方式吗?如果我想要10份副本,mtcars我可以

mt10 <- mtcars
for (i in 2:10) mt10 <- rbind(mt10, mtcars)
Run Code Online (Sandbox Code Playgroud)

这很简洁,但似乎不是R的精神.有没有更好的方法来做到这一点,或使用矢量回收的聪明技巧?

jor*_*ran 6

这是一个非常简单的方法:

mtcars[rep(1:nrow(mtcars),2),]
Run Code Online (Sandbox Code Playgroud)

或使用更好的"语法":

mtcars[rep(seq_len(nrow(mtcars)),2),]
Run Code Online (Sandbox Code Playgroud)

正如下面的GSee所述,这里的一个区别是rbind将精确复制行名称,而使用索引将通过附加数字强制使用唯一的行名称.在我的脑海中,我认为唯一的解决方法是在rep事后设置行名(再次使用).


Mat*_*rde 6

@joran的答案非常优雅,如果不需要复制rownames,你应该使用它.但是,这种方式也会复制rownames:

do.call(rbind, replicate(10, mtcars[1:10, ], simplify=FALSE))