我有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并将其存储在矢量中。
答案 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
您可以在代码中进行一些改进,但它们与您所要求的内容无关。