読者です 読者をやめる 読者になる 読者になる

apply系関数中で実行進捗状況を出力

R

シミュレーション中に進捗状況を監視。

path <- "C:/";

set.seed(091021)
r <- 20

m <- c(0, 0, 0.3)
s <- c(.1, .1, .1)
n <- c(10, 10, 10)
d <- do.call("rbind", 
    mapply(function(n, m, s) matrix(rnorm(r * n, mean = m, sd = s),
    nrow=n, ncol=r), n, m, s, SIMPLIFY = FALSE)
  )
g <- rep(1:length(n), n)

nc <<- 0
kw <- apply(
  d, 2, function(d, g) {
    res <- kruskal.test(d, g);
    nc <<- nc + 1;
    if (nc%%5==0) cat(sprintf("%3.0f%%\n", nc/r*100));
    return(res)
  }, g)

kw <- as.vector(sapply(kw, "[[", 3))
kw

name <- "kw"
save(kw, file = paste(path, name, ".RData", sep=""))
> kw <- apply(
+   d, 2, function(d, g) {
+     res <- kruskal.test(d, g);
+     nc <<- nc + 1;
+     if (nc%%5==0) cat(sprintf("%3.0f%%\n", nc/r*100));
+     return(res)
+   }, g)
 25%
 50%
 75%
100%


グローバル変数?への代入を利用した。

nc <<- 0