R 中矩阵中的采样列

Sampling columns in a matrix within R

我希望能够在 R 中对矩阵列进行随机采样。

假设我有矩阵

x <- matrix(1:10, nrow = 5, ncol = 2)

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

要随机抽取一列,我这样做

y <- x[sample(ncol(x), size = 1)]

但是,return编辑的不是与矩阵 x 的第 1 列或第 2 列相对应的排序值列表。

基本上,我希望 y return 随机选择第 1 列或第 2 列,完全按照矩阵中所写的那样,但我似乎无法理解这里发生的事情。

有什么想法吗?

当我们使用 matrix 时,索引应该是 row, column(类似于 data.frame - 但在 data.frame 中,如果我们不指定 ,,默认情况下它会给出列,因为列是单独的单位)。在矩阵中,单个单元是一个元素。因此,如果没有 row,column,它会根据该位置提取元素。为避免这种情况,请使用 ,。还有一件事是,当我们有一个 column/row 时,它会默认将维度降低为 drop = TRUE ?Extract

x[,sample(ncol(x), size = 1), drop = FALSE]