【发布时间】:2020-05-20 18:21:11
【问题描述】:
假设我有一个这样的矩阵
dat <- read.table(text = " code.1 code.2 code.3 code.4
1 82 93 NA NA
2 15 85 93 NA
3 93 89 NA NA
4 81 NA NA NA",
header = TRUE, stringsAsFactors = FALSE)
dat2=data.matrix(dat)
实际上,我的矩阵有 132 列和大约 15000 行。 我的列名如下所示:NoD_14569_norm.1 NoD_14569_norm.2 NoD_14569_norm.3 NoD_14581_30mM.1 NoD_14581_30mM.2 NoD_14581_30mM.3
我想要做的是为我的列名创建 1000 个随机排列,其中矩阵中的所有内容都将保持不变,除非会有新的列名顺序。
例如,列名的一种排列/改组会给我这个:
code.2 code.4 code.1 code.3
1 82 93 NA NA
2 15 85 93 NA
3 93 89 NA NA
4 81 NA NA NA
目标是对 1000 个数据帧中的每一个执行以下代码
subject="all_replicate"
targets<-readTargets(paste(PhenotypeDir,"hg_sg_",subject,"_target.txt", sep=''))
Treat <- factor(targets$Treatment,levels=c("C","T"))
Replicates <- factor(targets$rep)
design <- model.matrix(~Replicates+Treat)
corfit <- duplicateCorrelation(dat2, block = targets$Subject)
corfit$consensus.correlation
fit <-lmFit(dat2,design,block=targets$Subject,correlation=corfit$consensus.correlation)
fit<-eBayes(fit)
y1=topTable(fit, coef="TreatT", n=nrow(genes),adjust.method="BH",genelist=genes)
在 y1 内部有包含 p 值的列名 P.value,我想绘制所有上述 1000 个列名排列的分布。
请指教
【问题讨论】:
-
通过“列名的新顺序”,你的意思是
dat2[,sample(ncol(dat2))]吗?还是你的意思是colnames(dat2) <- sample(colnames(dat2))? -
感谢您的意见,我更新了我的问题以准确反映我的意思
-
我可能不应该称它为排列,而只是列名的改组
标签: r permutation