在数据框列表中重复行数据框n次

时间:2019-03-23 16:22:39

标签: r list dataframe

如何在列表的每个数据帧中重复并绑定一个数据帧行n次?因此,例如以下列表:

[[1]]
  x z y
 1 2 3

[[2]]
  x z y
 4 5 6

如果n为1,这是所需的输出。

[[1]]
  x z y
 1 2 3
 1 2 3
[[2]]
  x z y
 4 5 6
 4 5 6

数据:

list1 <- data.frame("x" = 1, "z" = 2, "y" = 3)
   list2 <- data.frame("x" = 4, "z" = 5, "y" = 6)
    Mylist <- list(list1, list2)   

1 个答案:

答案 0 :(得分:1)

我们可以使用lapplydo.callrbindrep。要使用rep创建复制数据框的列表,请确保使用list函数覆盖数据框。

lapply(Mylist, function(x){
  do.call(rbind, rep(list(x), 2))
})
# [[1]]
#   x z y
# 1 1 2 3
# 2 1 2 3
# 
# [[2]]
#   x z y
# 1 4 5 6
# 2 4 5 6

另一种想法是,只需将行索引复制多次,即可选择行,但是以后可能需要修复行名。

lapply(Mylist, function(x){
  x[rep(1, 2), ]
})
# [[1]]
#     x z y
# 1   1 2 3
# 1.1 1 2 3
# 
# [[2]]
#     x z y
# 1   4 5 6
# 1.1 4 5 6