1 votes

Comment nommer le résultat de la liste d'une liste en R

Supposons que j'ai la liste suivante d'une liste.

s <- c(1,2,3)
ss <- c(4,5,6)
S <- list(s,ss)
h <- c(4,8,7)
hh <- c(0,3,4)
H <- list(h,hh)
HH <- list(S,H)

J'aimerais nommer le résultat de la liste comme suit :

$First_model
$Res_1[[1]]
[1] 1 2 3

$Res_2[[2]]
[1] 4 5 6

$Second_model
$Res_1[[1]]
[1] 4 8 7

$Res_2[[2]]
[1] 0 3 4

J'ai essayé ce qui suit, mais ce n'est pas ce que je m'attendais.

names1 <- c("Premier","Deuxième")
# Et ensuite vous les collez à votre liste
names(HH) <- paste0(names1,"_result",  sep = "")

1 votes

Je pense que vous interprétez mal la façon dont la liste est imprimée. Votre sortie attendue n'est pas valide, car $First_model devrait également être le début de la deuxième ligne. C'est le [[1]] que vous voulez remplacer par $Res_1. Vous pouvez le faire en, par exemple, names(HH$First) <- c("Res_1", "Res_2")

1 votes

Une façon (peut-être) plus agréable d'afficher la liste est avec str(HH)

1 votes

@Bas Un grand merci pour ton aide incroyable.

1voto

Ronak Shah Points 24715

Vous pouvez essayer ce qui suit -

names1 <- c("Premier","Deuxième")

lapply(setNames(HH, paste0(names1, '_Modèle')), function(x) 
  setNames(x, paste0('Rés_', seq_along(x))))

#$Premier_Modèle
#$Premier_Modèle$Rés_1
#[1] 1 2 3

#$Premier_Modèle$Rés_2
#[1] 4 5 6

#$Deuxième_Modèle
#$Deuxième_Modèle$Rés_1
#[1] 4 8 7

#$Deuxième_Modèle$Rés_2
#[1] 0 3 4

0voto

jpdugo17 Points 501
library(purrr)
s <- c(1,2,3)
ss <- c(4,5,6)
S <- list(s,ss)
h <- c(4,8,7)
hh <- c(0,3,4)
H <- list(h,hh)
HH <- list(S,H)

names1 <- c("First","Second")
set_names(HH, names1) %>% map(~set_names(..1, c('Res_1', 'Res_2')))
#> $First
#> $First$Res_1
#> [1] 1 2 3
#> 
#> $First$Res_2
#> [1] 4 5 6
#> 
#> 
#> $Second
#> $Second$Res_1
#> [1] 4 8 7
#> 
#> $Second$Res_2
#> [1] 0 3 4

Créé le 2021-06-03 par le paquet reprex (v2.0.0)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X