R 将矩阵随机化多次

R 将矩阵随机化多次,r,permutation,R,Permutation,我有一个数据,一些高通量的基因数据,由矩阵a C1 C2 C3 C4 Gene A 3 5 7 4 Gene B 2 4 9 3 Gene C 1 6 8 5 我希望不断地将这个矩阵随机化,比如说10次,并将每个新的随机化矩阵保存为R中的一个新对象。所以我将a随机化为A1,A2A10,然后我可以在需要时随时保存这些内容,检索A1,,…A10。我知道我可以使用A1将A行随机化,我们可以使用replicate将矩阵随机化n次。我们指定simp

我有一个数据,一些高通量的基因数据,由矩阵
a

          C1 C2 C3 C4
 Gene A   3  5  7  4
 Gene B   2  4  9  3
 Gene C   1  6  8  5

我希望不断地将这个矩阵随机化,比如说10次,并将每个新的随机化矩阵保存为R中的一个新对象。所以我将
a
随机化为
A1
A2
A10
,然后我可以在需要时随时保存这些内容,检索
A1
,,…
A10
。我知道我可以使用
A1将
A
行随机化,我们可以使用
replicate
矩阵
随机化n次。我们指定
simplify=FALSE
以获得
列表
输出

n <- 10
lst <- replicate(n, A[,sample(ncol(A))], simplify=FALSE)
names(lst) <- paste0('A', seq(n))
lst$A1
#       C1 C2 C4 C3
#Gene A  3  5  4  7
#Gene B  2  4  3  9
#Gene C  1  6  5  8
数据
A我不确定您的采样是否正确。我得到的印象是,每一行都应该是独立的,比如
replicate(10,t(apply(m,1,sample))
@Frank我也被OP的code
DataRN[,sample(ncol(A))]弄糊涂了。
不清楚
DataRN
是什么。是的,我认为@Frank是正确的。我想做一些排列测试,所以我想把每一行独立地随机化。另外,我刚刚编辑了我的帖子,DataRN[,sample(ncol(A))]实际上应该是一个[,sample(ncol(A))]@NelLau谢谢你的回复。我在遵循你的密码。更正。@akrun谢谢你的帮助。关于
lst的几个简单问题
n <- 10
lst <- replicate(n, A[,sample(ncol(A))], simplify=FALSE)
names(lst) <- paste0('A', seq(n))
lst$A1
#       C1 C2 C4 C3
#Gene A  3  5  4  7
#Gene B  2  4  3  9
#Gene C  1  6  5  8
lst <- replicate(n, t(apply(A,1,sample)) , simplify=FALSE)
names(lst) <- paste0('A', seq(n))
lst <- lapply(lst, function(x) {colnames(x) <- colnames(A); x})
lst$A1
#       C1 C2 C3 C4
#Gene A  7  4  3  5
#Gene B  2  4  9  3
#Gene C  5  8  1  6
A <- structure(c(3L, 2L, 1L, 5L, 4L, 6L, 7L, 9L, 8L, 4L, 3L, 5L), 
.Dim = 3:4, .Dimnames = list(
c("Gene A", "Gene B", "Gene C"), c("C1", "C2", "C3", "C4")))