复制 R 矩阵中的行
Duplicating rows in R matrix
我有一个小矩阵,比方说
x <- matrix(1:10, nrow = 5) # values 1:10 across 5 rows and 2 columns
结果是
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
我现在想要做的是在 x 中复制随机行;例如,生产
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 5 10
[4,] 4 9
[5,] 5 10
我相信 R 函数 'rep()' 是解决方案,也是 'sample()',但我不想在 sample() 中指定大小参数;即,我希望每次复制任意数量的行。
是否有使用 rep() 和 sample() 完成此操作的简单方法?
我们可以使用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
另一种选择可以作为样本 a 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
或
只要复制最多 3 个随机行,解决方案可能是:
x[sample(1:nrow(x),3),] <- x[sample(1:nrow(x),3),]
我有一个小矩阵,比方说
x <- matrix(1:10, nrow = 5) # values 1:10 across 5 rows and 2 columns
结果是
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
我现在想要做的是在 x 中复制随机行;例如,生产
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 5 10
[4,] 4 9
[5,] 5 10
我相信 R 函数 'rep()' 是解决方案,也是 'sample()',但我不想在 sample() 中指定大小参数;即,我希望每次复制任意数量的行。
是否有使用 rep() 和 sample() 完成此操作的简单方法?
我们可以使用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
另一种选择可以作为样本 a 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
或
只要复制最多 3 个随机行,解决方案可能是:
x[sample(1:nrow(x),3),] <- x[sample(1:nrow(x),3),]