所以我有一个由零填充的20x20矩阵。我已对此矩阵进行了采样,现在有一个带有此样本数字的向量。如何获取矩阵中那些采样零的坐标?
a <- numeric(400)
mat <- matrix(a, 20, 20)
set.seed(1234)
sample_vector <- sample(mat, 6, replace=TRUE)
我试过
which (mat ==0, arr.ind=TRUE)
但它返回矩阵中所有零的坐标(不出所料),并且假设矩阵仅由零填充,则不会返回采样零的坐标。
我如何获得这些坐标?
答案 0 :(得分:2)
问题就像从一盒400个白球中取出6球一样。除非你用唯一的数字标记所有400个球,否则它们是相同的,并且无法知道绘制了哪个。
同样,现在您的矩阵元素由(i,j)
标记。您可以直接对位置进行抽样:
i <- sample(20, 6, TRUE)
j <- sample(20, 6, TRUE)
然后,正在采样的元素是mat[cbind(i,j)]
。
答案 1 :(得分:0)
你可以考虑到矩阵只是一个具有dim
属性的向量实际上具有:
length(mat)
[1] 400
知道这些元素是明智地存储的,你可以使用矩阵的长度进行采样:
set.seed(1234)
ind <- sample(length(mm), 10)
ind
[1] 12 62 60 61 83 97 1 22 99 47
然后是子集:
mat[ind]
[1] 0 0 0 0 0 0 0 0 0 0
但你现在知道第一个0与12相关,它是矩阵元素[2,2]
中包含的元素,第二个零包含在元素[2,7]
中,第三个包含在[10, 6]
中 ((23 / 8))
[1] 2.875
8 * 0.875
[1] 7
1}}等等。
当然,如果矩阵有例如8行和7列,我们想要知道第23个元素,将23除以8,删除整数部分并将行数乘以小数部分:
var msg = theMessage;
前两列将是“完整”,因此第23个元素将位于第三列的第七位。