Modérateur : Groupe des modérateurs
Code : Tout sélectionner
library(ncdf)
DATA <- open.ncdf("G:/Drop/Dropbox/Master1/ComplModClim/Travail/Data/tas_Amon_EC-EARTH_historical_r1i1p1_194001-200911.nc")
t <- get.var.ncdf(DATA, "time")
lon <- get.var.ncdf(DATA, "lon")
lat <- get.var.ncdf(DATA, "lat")
tas <- get.var.ncdf(DATA, "tas")
Nt <- length(t)
nlon <- length(lon)
nlat <- length(lat)
Code : Tout sélectionner
for(i in seq(nlon)){
for(j in seq(nlat)){
tas_mean[i,j] <- mean(tas[i,j,seq(t[10],t[30])])
}
}
Code : Tout sélectionner
system.time( tas_mean1 <- apply(tas,1:2,mean) )
system.time( {
tas_mean2 <- matrix(NA,nlon,nlat)
for(i in seq(nlon))
for(j in seq(nlat))
tas_mean2[i,j] <- mean(tas[i,j,])
} )
identical(tas_mean1, tas_mean2)
Code : Tout sélectionner
> bob <- list()
bob[[1]] <- matrix(c(10,15,5,2), byrow=T, ncol=2)
bob[[2]] <- matrix(c(10,15,5,2), byrow=T, ncol=2)
mapply(sum, bob[[1]], bob[[2]])
[1] 20 10 30 4
Code : Tout sélectionner
> matrix(mapply(sum, bob[[1]], bob[[2]]), ncol=2)
[,1] [,2]
[1,] 20 30
[2,] 10 4
Code : Tout sélectionner
tas_mean1 <- apply(tas,1:2,mean)
tas_mean2 <- rowMeans(tas, dims=2)
all.equal(tas_mean1, tas_mean2)
[1] TRUE
microbenchmark(tas_mean1 <- apply(tas,1:2,mean), tas_mean2 <- rowMeans(tas, dims=2))
Unit: milliseconds
expr min lq median uq max neval
tas_mean1 <- apply(tas, 1:2, mean) 2750.5279 2775.128 2898.791 2915.7816 3008.3859 100
tas_mean2 <- rowMeans(tas, dims = 2) 112.1209 112.718 113.066 113.4606 115.1138 100
Code : Tout sélectionner
xx <- NULL
for(i in 1:10) xx[[i]] <- matrix(c(1,2,3,4),nc=2)
Reduce("+",xx)
Reduce("+",xx)/length(xx)
Retourner vers « Questions en cours »
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité