我有一个小矩阵,比如说
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()完成此操作?
答案 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),]