复制R矩阵中的行

时间:2018-02-27 19:06:54

标签: r sample rep

我有一个小矩阵,比如说

While($csv[$count].ip = $csv[$count++].ip)

结果是

x <- matrix(1:10, nrow = 5) # values 1:10 across 5 rows and 2 columns

我现在想要做的是x中的重复随机行;例如,制作

     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10

我相信R函数&#39; rep()&#39;是解决方案,也是&#39; sample()&#39;,但我不想在sample()中指定size参数;即,我希望每次都能复制任意数量的行。

有没有一种简单的方法可以使用rep()和sample()完成此操作?

2 个答案:

答案 0 :(得分:2)

我们可以使用sample功能。我已将set.seed用于再现性,如果删除该行,结果应该会更改。

set.seed(1848) # reproducibility
x[sample(x = nrow(x), size = nrow(x), replace = T), ]

     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    5   10
[4,]    1    6
[5,]    5   10

答案 1 :(得分:0)

另一个选项可以是row number样本,并将其替换为另一个样本row number。它将如下:

x[sample(1:nrow(x),1),] <- x[sample(1:nrow(x),1),]


x
#     [,1] [,2]
#[1,]    5   10
#[2,]    2    7
#[3,]    3    8
#[4,]    4    9
#[5,]    5   10

OR

要复制最多3个随机行,解决方案可能是:

x[sample(1:nrow(x),3),] <- x[sample(1:nrow(x),3),]