这是我的数据。
set.seed(100)
toydata <- data.frame(A = sample(0:50,50,replace = T),
B = sample(0:50,50,replace = T),
C = sample(0:50,50,replace = T),
D = sample(0:50,50,replace = T),
E = sample(0:50,50,replace = T)
)
toydata<-as.matrix(toydata)
toydata[1,]<-0
toydata[44,]<-0
toydata[1,4]<-3
toydata[44,1]<-4
m<-toydata
这是我的交换功能:
derangement <- function(x){
if(max(table(x)) > length(x)/2) return(NA)
while(TRUE){
y <- sample(x)
if(all(y != x)) return(y)
}
}
swapFun <- function(x, n = 10){
inx <- which(x < n)
y <- derangement(x[inx])
if(length(y) == 1) return(NA)
x[inx] <- y
x
}
交换之后,我希望两个矩阵之间的行中位数之和小于12。
我使用for循环来找到可行的解决方案:
for (i in 1:1000000000) {
mnew<-swapFun(m)
if((sum(abs(rowMedians(mnew)-rowMedians(m))))<12)
{break}
}
我的计算机有5个核心。如何通过使用更多内核来加快for循环。
非常感谢。