我是r的新人
我在R中执行置换测试以确定某些SNP的出现百分比是否是随机的我的数据设置了52K值的向量我正在通过Loop进行测试:
R1_H <- R1[,12] #extract the vector from a dataframe
niter=100000 #set the number of iterations
out <- rep(0,length(R1_H))
for (i in 1:niter){
out = out + (R1_H <= sample(R1_H)) #compare my ocurrence against a
#sample of the entire population
}
pvalue=out/niter #determine the pvalue
R1$pvalueF = pvalue #print the pvalue
问题是这种方式极其缓慢且耗费资源。有人认为这是一种更有效的方法吗?非常感谢
我不完全确定你在做什么。但有几点。 R具有内置的replicate
功能,专门为此类设计而设计。您可以使用的一个选项是:
my_vector <- replicate(niter,
expr = (R1_H <= sample(R1_H, replace = T)))
这将重复expr
为niter
时代。在这种情况下,它将采样替换并返回一个矩阵,其中包含R1_H和10k列中的数据点数。然后你可以这样做:
mean(colMeans(my_vector))
获取您要报告的“pvalue”。