Dianthus-broteri-Competition / Functional_traits_analysis / script / Traitmodels_stan / merge_stan_results.R
merge_stan_results.R
Raw
#install.packages("here")
library(stringr)
setwd("C:/Users/USUARIO/OneDrive - UNIVERSIDAD DE SEVILLA/Escritorio/Universidad/Tesis Alba/Tarea 1_Competencia/Estadillo_6meses")
library(here)
library(rstan)

substrRight <- function(x, n){
  substr(x, nchar(x)-n+1, nchar(x))
}

archivos_rds <- list.files(path = here("output","stan_results"),pattern = "\\.rds$")
archivos_rds_path <- list.files(path = here("output","stan_results"),pattern = "\\.rds$",full.names = T)
# Loop para leer cada archivo RDS y asignar los datos a una variable con el nombre del archivo

nombre_variable <- sub("\\.rds$", "", archivos_rds)
for(i in 1:length(archivos_rds_path)) {
  # Eliminar la extensión .rds para usar el nombre del archivo como nombre de la variable
  nombre_variable <- sub("\\.rds$", "", archivos_rds)
  datos <- readRDS(archivos_rds_path[i])
  assign(nombre_variable[i], datos)
}




list_fit<-list(fitA,fitgsw, fitWUEi, fitfvfm, fitSLA,fitLDMC)
list_fit_water<-list(fitA_water, fitgsw_water , fitWUEi_water, 
                     fitfvfm_water,  fitSLA_water,fitLDMC_water)

traits<-c("A","gsw","WUEi","FvFm","SLA","LDMC")


# all models

reslistc<-list()
for (i in 1:length(list_fit)) {
  reslistc[[i]] <-  as.data.frame(summary(list_fit[[i]], pars=c("m1","alpha0intra_species",
                                                                "alpha0inter_species","alpha_t","alpha_e","alpha_d"), 
                                          probs=c(0.025, 0.50, 0.975))[[1]][,4:6])
  reslistc[[i]]$parameter<-str_replace(str_replace(rownames(reslistc[[i]]), 
                                                   pattern =  "_dry", replacement = ""), pattern =  "_wet", replacement = "")
  reslistc[[i]]$water_status <- "all"
  reslistc[[i]]$trait <- traits[i]
}
df_post <- do.call("rbind",reslistc)


# water_status models
reslist<-list()
for (i in 1:length(list_fit_water)) {
  reslist[[i]] <- as.data.frame(summary(list_fit_water[[i]], pars=c("m1_dry", "m1_wet",
              "alpha0intra_species_dry", "alpha0intra_species_wet", 
              "alpha0inter_species_dry", "alpha0inter_species_wet",
               "alpha_t_dry", "alpha_t_wet", "alpha_e_dry",
              "alpha_e_wet", "alpha_d_dry",
              "alpha_d_wet"), probs=c(0.025, 0.50, 0.975))[[1]][,4:6])
  reslist[[i]]$parameter<-str_replace(str_replace(rownames(reslist[[i]]), 
                          pattern =  "_dry", replacement = ""), pattern =  "_wet", replacement = "")
  reslist[[i]]$water_status <- substrRight(rownames(reslist[[i]]), n=3)
  reslist[[i]]$trait <- traits[i]
}
df_water <- do.call("rbind",reslist)

res<-rbind(df_post,df_water)