我有一个M行和N列的矩阵。我需要在这些矩阵中随机抽样不同的位置并返回行索引和列索引。矩阵的随机样本条目并返回R中的(行,列)索引?
我的方法:说,我想在矩阵中抽取30个百分比的条目。然后,我遍历整个矩阵,在每个点上,我抛出一个有30%概率头的有偏见的硬币,并选择头部到来的位置。因为我的数据很大,所以大约选择了30%的条目。但是,我观察到这真的很慢。有没有办法加快这一点?或者更好的方法来做到这一点?
我有一个M行和N列的矩阵。我需要在这些矩阵中随机抽样不同的位置并返回行索引和列索引。矩阵的随机样本条目并返回R中的(行,列)索引?
我的方法:说,我想在矩阵中抽取30个百分比的条目。然后,我遍历整个矩阵,在每个点上,我抛出一个有30%概率头的有偏见的硬币,并选择头部到来的位置。因为我的数据很大,所以大约选择了30%的条目。但是,我观察到这真的很慢。有没有办法加快这一点?或者更好的方法来做到这一点?
如果m
是你的矩阵,只是尝试:
arrayInd(sample(length(m),0.3*length(m)),dim(m))
一个例子:
set.seed(1)
m<-matrix(ncol=6,nrow=6)
arrayInd(sample(length(m),0.3*length(m)),dim(m))
# [,1] [,2]
# [1,] 4 2
# [2,] 2 3
# [3,] 2 4
# [4,] 6 5
# [5,] 1 2
# [6,] 4 5
# [7,] 5 5
# [8,] 4 6
# [9,] 6 3
#[10,] 2 1
见这个例子:
m=2
n=5
SampleSize=0.3
#dummy data
x <- matrix(runif(m*n),nrow=n)
#sample
set.seed(123)
temp <- x
temp[ sample(1:length(temp),round(length(temp)*SampleSize))] <- -9
#index
ix <- temp==-9
ix
# [,1] [,2]
# [1,] FALSE FALSE
# [2,] FALSE FALSE
# [3,] TRUE TRUE
# [4,] TRUE FALSE
# [5,] FALSE FALSE
我的新宠选项:
indexSampler <- function(m, p) {
matrix(sample(c(TRUE,FALSE), length(m), p = c(p, 1 - p), replace=TRUE), ncol(m))
}
你不会得到索引,但是你会得到一个充满TRUE/FALSE的矩阵,可以用来索引。
它的速度很快(对于200x200的矩阵来说是1000倍,对于小矩阵来说也是明显更快)。
可能的重复如果我试图找回指数,它不会进一步慢! – dineshdileep
您需要从矩阵中排列/ col索引或值本身? –
行,列索引。 – dineshdileep
为什么不是实际值?你将如何处理索引? –