### r代码来自Vignette源'xvalcomputerclusters.rnw'########################################################## ###代码块编号1:xvalcomputerclusters.rnw:34-35 ###############################################################################################################################)库(golubesets)数据(golub_merge)smallg <-golub_merge [200:250,] ################################################################ ###代码块数字3:xval ###########################################################xvalspec(“ loo”))confumat(lk1)############################################## ###代码块编号4:clusterinit(eval = false)#########################################################] ################################ ###代码块编号5:clusterstart(est = false)#################################################### ##图书馆(雪)## cl <-akecluster(8,“ mpi”)## clusterEvalq(cl,library(mlinterfaces))#######################################################)############################## ## lk1 <-xval(SmallG,“ all.aml”,Knnb,xvalmethod =“ loo”,## group = as.integer(0),cluster = cl)## table(lk1,smallg $ all。AML)############################# ### code chunk number 7: xvalComputerClusters.Rnw:113-116 (eval = FALSE) ################################################### ## setMethod("xvalLoop", ## signature( cluster = "ANY" ), ## function( cluster, ... ) lapply ) ################################################### ### code chunk number 8: xvalComputerClusters.Rnw:133-137 (eval = FALSE) ################################################### ## setOldClass( "spawnedMPIcluster" ) ## setMethod("xvalLoop", ## signature( cluster = "spawnedMPIcluster" ), ## function( cluster, ... ) parLapply ) ################################################### ### code chunk number 9: xvalComputerClusters.Rnw:151-160 (eval = FALSE) ################################################### ## setOldClass( "spawnedMPIcluster" ) ## setMethod("xvalLoop", ## signature( cluster = "spawnedMPIcluster" ), ## function( cluster, ... ) { ## relapply <- function(X, FUN, ...) { ## parLapply( cluster, X, FUN, ... ) ## } ## relapply ## }) ################################################### ### code chunk number 10: xvalComputerClusters.Rnw:179-196 (eval = FALSE) ################################################### ## setMethod("xvalLoop", signature( cluster = "spawnedMPIcluster"), ## function( cluster, ... ) { ## clusterExportEnv <- function (cl, env = .GlobalEnv) ## { ## unpackEnv <- function(env) { ## for ( name in ls(env) ) assign(name, get(name, env), .GlobalEnv ) ## NULL ## } ## clusterCall(cl, unpackEnv, env) ## } ## relapply <- function(X, FUN, ...) { ## ## send all visible variables from the parent (i.e., xval) frame ## clusterExportEnv( cluster, parent.frame(1) ) ## parLapply( cluster, X, FUN, ... ) ## } ## relapply ## }) ################################################### ### code chunk number 11: xvalComputerClusters.Rnw:208-210 ################################################### res <- c(20.04,11.34, 9.23, 8.20, 7.87) plot(res,ylab="Time (seconds)", xlab="Nodes", ylim=c(0,max(res))) ################################################### ### code chunk number 12: xvalComputerClusters.Rnw:221-234 (eval = FALSE) ################################################### ## harness <- function( nodes, reps, data ) { ## if ( nodes > 1) { ## cl <- makeCluster(nodes, "MPI") ## clusterEvalQ(cl, library(MLInterfaces)) ## } else cl <- NULL ## func <- function(x) ## res <- xval(data, "ALL.AML", knnB, xvalMethod = "LOO", 0:0, cluster = cl ) ## func() # warm-up ## tm <- system.time( sapply( 1:reps, func ) )[3] ## if (nodes > 1) stopCluster(cl) ## tm ## } ## res <- sapply( 1:5, harness, 10, smallG ) ################################################### ### code chunk number 13: xvalComputerClusters.Rnw:279-286 ################################################### x <- 1:10 for (i in 1:10) x[i] <- i**2 x # x has been modified by the for loop x <- 1:10 res <- lapply(1:10, function(i) x[i] <- i**2) x # copy of x in lapply modified, not the global x