从随机到不随机选择列

时间:2015-06-18 07:00:29

标签: r random

我有R的这段脚本,我想稍微调整一下。

以下是我的脚本,mydata.csv列的导入n文件:

library(orddom)
R=6
delta = numeric (R)
for (i in 1:R) {`
a <- data.matrix(sample(mydata, 2, replace=FALSE)) 
drops <- c(colnames(a)) 
b <- data.matrix(mydata[,!(names(mydata) %in% drops)]) 
a1 <- na.omit(t(matrix(a,1)))
b1 <- na.omit(t(matrix(b,1)))
colnames(a1) <- c("Group 1")
colnames(b1) <- c("Group 2")
delta [i] <- abs(as.numeric(orddom(a1, b1, alpha = 0.05, paired=FALSE)[13,1]))

问题在于,对于向量a,mydata的列被随机重新采样,导致几个相等的delta值,因为每次迭代过程再次开始时,都有可能选择相同的列集。

现在我希望不对列进行随机重采样。所以我想要所有可能的列组合,第1列和第2列和第3列是第2列和第1列和第3列相同的组合,依此类推,避免了一列与自身的组合,而不重复。

有没有办法排除之前已经选择的列组合?

然后我想为每个组合计算delta并将其存储在矢量中。

orddom: Ordinal Dominance Statistics

1 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:

 #get the combos outside the loop
 combos<-combn(length(mydata),2)
 R<-ncol(combos)
 delta<-numeric(R)
 #in the loop, replace the first line
 a <- mydata[,combos[,i]]
 #the rest should be ok

您可以在代码中进行一些改进,但它们与您所要求的内容无关。