0

我有一个看起来像这样的数据框:

x <- as.data.frame(matrix(data = c("a", "b", "c", 1, 2, 3), 
                      ncol = 2,
                      nrow = 3,
                      byrow = FALSE))

> x
  V1 V2
1 a  1
2 b  2
3 c  3

假设我想复制元素 x[1,2] 四次,元素 x[2,2] 六次,元素 x[3,2] 五次,并将它们全部保存在一个新的数据框中。

> v
  V1
  1
  1
  1
  1
  2
  2
  ...

我知道我可以通过使用来做到这一点rep,但我想知道是否有更舒适的方法。

4

2 回答 2

0

这是另一种选择

data.frame(v=rep(as.numeric(x[,2]), c(4,6,5)))

如果要保留因子,则省略as.numeric(·)

data.frame(v=rep(x[,2], c(4,6,5)))
于 2013-10-07T14:49:27.333 回答
0

你可以使用类似的东西

TheseRows <- c(1, 2, 3)
NManyReps <- c(4, 6, 5)
x[, 2][ do.call(rep, list(TheseRows, NManyReps)) ]
于 2013-10-07T14:37:30.440 回答