我认为这个问题是不言自明的,但要明确:
我本质上是想以一种有效的方式置换矩阵的元素,而不是简单地对列进行重新排序以使列之间的关系保持不变。
现在,我正在尝试像这样产生这种重新排序:
inds=matrix(nrow=nrow(datExprNorm),ncol=ncol(datExprNorm))
for(i in 1:nrow(datExprNorm)){
inds[i,]=sample(1:ncol(datExprNorm),ncol(datExprNorm))
}
然后用重新排序的条目索引我的原始矩阵:
datPermut=datExprNorm[inds]
但是我遇到了这个错误:
datExprNorm [inds]中的错误:此类索引必须通过逻辑或2列数字矩阵进行
提前致谢!
我似乎通过先转换为数字然后重新创建矩阵来回往返来使其运行:
datExprNorm_numeric <- as.numeric(datExprNorm)
inds_numeric <- as.numeric(inds)
sampled <- datExprNorm_numeric[inds_numeric]
datPermut <- matrix(sampled, nrow = nrow(datExprNorm), ncol = ncol(datExprNorm))
这是一个较小的玩具示例:
x <- matrix(c(4, 3, 2, 1), nrow = 2)
给出:
[,1] [,2]
[1,] 4 2
[2,] 3 1
和
y <- matrix(c(1, 1, 2, 2), nrow = 2)
给
[,1] [,2]
[1,] 1 2
[2,] 1 2
现在结合:
z <- as.numeric(x)[as.numeric(y)]
z <- matrix(z, nrow = 2, ncol = 2)
结果:
[,1] [,2]
[1,] 4 3
[2,] 4 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句