R 对矩阵的列重新排序,每行的顺序不同

R 对矩阵的列重新排序,每行的顺序不同,r,permutation,R,Permutation,我认为这个问题是不言自明的,但要明确: 我基本上希望以一种有效的方式排列矩阵的元素,而不是简单地重新排列列,使列之间的关系保持不变 现在,我正试图进行如下重新排序: inds=matrix(nrow=nrow(datExprNorm),ncol=ncol(datExprNorm)) for(i in 1:nrow(datExprNorm)){ inds[i,]=sample(1:ncol(datExprNorm),ncol(datExprNorm)) } 然后用重新排序的条目索引我的原始矩

我认为这个问题是不言自明的,但要明确:

我基本上希望以一种有效的方式排列矩阵的元素,而不是简单地重新排列列,使列之间的关系保持不变

现在,我正试图进行如下重新排序:

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))

现在合并:

z <- as.numeric(x)[as.numeric(y)]

z <- matrix(z, nrow = 2, ncol = 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