nrow.y <- dim(y)[1] ncol.y <- dim(y)[2] primes <- c(1, 2, 3, 5, 7, 11,13,17,19,23,29,31) primes1 <- primes[1:ncol.y] yind <- as.matrix(y) %*% cbind(sqrt(primes1)) x <- unique(y) nrow.x <- dim(x)[1] xind <- as.matrix(x) %*% cbind(sqrt(primes1)) pv <- rep(0, nrow.x) dyn.load("SplitupAnnotated.dll"); for (i in 1:nrow.x) { l <- length(x)/2 m <- sum(x[i, 1:l]) marr <- matrix(0,1,l) s <- matrix(0,1,l) xs <- matrix(0,1,l) marr[1] <- x[i,1]+x[i,1+l] for (j in 2:l) { marr[j] <- x[i, j] + x[i, j+l] + marr[j-1] } if (marr[1] > 0) { s[1] <- (marr[1] + 1)/2 c1 <- rep(s[1], marr[1]) } else { s[1] <- 0 c1 <- c() } scores <- c(c1) for (j in 2:l) { if (marr[j] - marr[j-1] > 0) { s[j] <- (marr[j] + marr[j-1] + 1)/2 c1 <- rep(s[j], marr[j]-marr[j-1]) } else { s[j] <- 0 c1 <- c() } scores <- c(scores,c1) } # cat(scores, '\n') for (j in 1:l) { xs[j] <- x[i,j]*s[j] } obs <- sum(xs) if (obs > m*(sum(x[i,]) + 1)/2) obs <- obs - 0.1 scores <- scores[ scores != 0 ] pv[i] <- .Call("R_split_up_2sample", as.numeric(scores), as.integer(m), as.numeric(obs)) if (obs > m*(sum(x[i,]) + 1)/2) pv[i] <- 1 - pv[i] pv[i] = min(1, 2*pv[i]) } dyn.unload("SplitupAnnotated.dll"); pv.y <- rep(0, nrow.y) for (i in 1:nrow.x) { pv.y[ yind == xind[i] ] <- pv[i] } result <- cbind(y, pv.y)