R重复数据帧的元素

Sis*_*sse 4 r repeat dataframe

我在互联网上搜索过,但我找不到解决问题的办法.我有一个数字和字符的数据框:

mydf <- data.frame(col1=c(1, 2, 3, 4), 
                   col2 = c(5, 6, 7, 8), 
                   col3 = c("a", "b", "c", "d"), stringsAsFactors  = FALSE)
Run Code Online (Sandbox Code Playgroud)

是myDF:

col1 col2 col3
  1    5   a
  2    6   b
  3    7   c
  4    8   d
Run Code Online (Sandbox Code Playgroud)

我想重复一遍

col1 col2 col3
  1   5    a
  1   5    a
  1   5    a
  2   6    b
  2   6    b
  2   6    b
  3   7    c
  3   7    c
  3   7    c
  4   8    d
  4   8    d
  4   8    d
Run Code Online (Sandbox Code Playgroud)

使用apply(mydf, 2, function(x) rep(x, each = 3))将给出正确的重复,但不会像我希望的那样分别保留col1,col2和col3的类,如数字,数字和字符.这是一个构造的示例,在我的数据框中设置每列的类有点单调乏味.

有没有办法在保存课程的同时进行重复?

Ric*_*ton 10

它比你想象的还要容易.

index <- rep(seq_len(nrow(mydf)), each = 3)
mydf[index, ]
Run Code Online (Sandbox Code Playgroud)

这也避免了隐式循环apply.


Joh*_*ohn 4

这是一个不幸且意外的类转换(无论如何,我也是如此)。这是一个简单的解决方法,它利用了 data.frame 只是一个特殊列表这一事实。

data.frame(lapply(mydf, function(x) rep(x, each = 3)))
Run Code Online (Sandbox Code Playgroud)

(有人知道为什么提问者观察到的行为不应该被报告为错误吗?)