Je suis en train de créer une liste avec la structure suivante (imbriquée):Répliquer une liste pour créer une liste-of-listes
l <- list()
for(i in seq(5)) l[[i]] <- list(a=NA,b=NA)
> str(l)
List of 5
$ :List of 2
..$ a: logi NA
..$ b: logi NA
$ :List of 2
..$ a: logi NA
..$ b: logi NA
$ :List of 2
..$ a: logi NA
..$ b: logi NA
$ :List of 2
..$ a: logi NA
..$ b: logi NA
$ :List of 2
..$ a: logi NA
..$ b: logi NA
Je voudrais le faire via rep
ou similaire, comme je Je crée tout un tas de listes vierges que je vais remplir plus tard. (Je suis conscient que je peux simplement développer une liste en se référant à son index suivant, mais cela ne fonctionne pas lors de l'indexation de deux profondeurs).
Je pensais que rep
travaillé pour cela, mais il ne semble pas. ?rep
donne l'exemple suivant:
fred <- list(happy = 1:10, name = "squash")
rep(fred, 5)
qui retourne:
> str(rep(fred, 5))
List of 10
$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
$ name : chr "squash"
$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
$ name : chr "squash"
$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
$ name : chr "squash"
$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
$ name : chr "squash"
$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
$ name : chr "squash"
En d'autres termes, il aplatit la liste.
J'ai également essayé list(rep(fred,5))
qui échoue également.
Comment répliquer une liste de listes?
Est-ce juste moi ou est-ce horriblement non-intuitif? Merci pour la solution. –
@ AriB.Friedman - Cela peut être plus logique si vous comparez rep (1: 2, 5) 'et' rep (list (1: 2), 5) 'en gardant à l'esprit qu'une liste ** est vraiment ** un type de vecteur. Est ce que ça aide? –
@ JoshO'Brien Ouais, c'est vrai. –