重复data.frame的元素

时间:2015-07-21 08:45:15

标签: r repeat

这似乎是一个相当简单的问题,但我无法找到一个简单的解决方案:

我想重复一次data.frame(i)如下:

我的初始data.frame:

   i <- data.frame(c("A","A","A","B","B","B","C","C","C"))
   i

打印i会导致:

   1  A
   2  A
   3  A
   4  B
   5  B
   6  B
   7  C
   8  C
   9  C

我想如何重复元素(第一列上的数字只是为了便于理解/查看)

   i 

  1  A
  2  A
  3  A
  4  B
  5  B
  6  B
  7  C
  8  C
  9  C
  1  A
  2  A
  3  A
  4  B
  5  B
  6  B
  7  C
  8  C
  9  C

我尝试使用:

  i[rep(seq_len(nrow(i)), each=2),]

但是它提供了这样的输出(第一列上的数字只是为了便于理解/查看):

  1  A
  2  A
  3  A
  1  A
  2  A
  3  A
  4  B
  5  B
  6  B
  4  B
  5  B
  6  B
  7  C
  8  C
  9  C
  7  C
  8  C
  9  C

请帮忙!

3 个答案:

答案 0 :(得分:2)

不确定这是否解决了您的问题,但是要获得所需的输出您可以简单地重复整个序列:

 i <- c("A","A","A","B","B","B","C","C","C")
 i2 <- rep(i,2)
 #> i2
 # [1] "A" "A" "A" "B" "B" "B" "C" "C" "C" "A" "A" "A" "B" "B" "B" "C" "C" "C"

由于您正在处理数据框,因此可以使用稍加修改的变体:

i <- data.frame(c("A","A","A","B","B","B","C","C","C")) 
i2 <- rep(i[,1],2)

答案 1 :(得分:1)

您可以使用rbind(i, i)。这有用吗?

答案 2 :(得分:1)

如果您正在使用数据框,此代码也可以正常工作:

i[rep(1:nrow(i), 5), ,drop=F]