library(bigmemory) library(bit) library(readr) library(doParallel) library(ff) # Usemos "resumen" para calcula el mínimo, media, maximo y largo de un vector resumen = function(x) c(min = min(x,na.rm=TRUE), media = mean(x,na.rm=TRUE), max = max(x,na.rm=TRUE),largo = length(x)) ######### # Archivo de 29 Mb archivo0 = "Desktop/R ZORA Ejemplos/CLASE 1/minitrain.csv" # Archivo de 15 Gb archivo1 = "Desktop/R ZORA Ejemplos/CLASE 1/train_data.csv" bd = read.big.matrix(archivo0,type='double', header = TRUE,sep = ",", backingfile="bd0.bin", # representación binaria de la matriz en el disco descriptorfile="bd0.desc", # metadata ) # Extraemos la columna 4 y aplicamos la funcion resumen bd4 = bd[,4] resumen(bd4) ###### # Informa sobre la memoria y ayuda a limpiar gc() gc(reset = TRUE) # Guardar el arreglo big.matrix para su uso posterior sin tener que cargarlo de nuevo # escribirlo # write.big.matrix(bd,'bd.csv', col.names = TRUE,sep= ",") # write.big.matrix(td,'td.csv', col.names = TRUE,sep= ",") # borrarlo de R # rm(bd) # gc() # gc(reset = TRUE) # Volver a cargarlo #bd = read.big.matrix("bd.csv", header = TRUE,sep= ",",type = 'double') ########### PARALELO ########## cl <- makeCluster(4) clusterExport(cl,c('resumen','bd4')) n = nrow(bd) idx <- splitIndices(n, length(cl)) res = clusterApply(cl, idx, resumen) stopCluster(cl) res1 = crbind(res) res1 gc() gc(reset = TRUE)