一次重复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的精神.有没有更好的方法来做到这一点,或使用矢量回收的聪明技巧?
这是一个非常简单的方法:
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事后设置行名(再次使用).
@joran的答案非常优雅,如果不需要复制rownames,你应该使用它.但是,这种方式也会复制rownames:
do.call(rbind, replicate(10, mtcars[1:10, ], simplify=FALSE))
| 归档时间: |
|
| 查看次数: |
1301 次 |
| 最近记录: |