2015-05-17 19 views
5

utworzyć listę list w następujący sposób:Dodaj nowy element do listy listach (w R)

key<-112233 
list1 <- list(a = 2, b = 3) 
list2 <- list(c = "a", d = "b") 
mylist <- list(list1, list2) 

Następnie chcę dodać nową parę do drugiej listy, ale chciałbym na klucz, aby zdefiniować wcześniej zdefiniowaną wartość key. Kiedy zrobić

mylist[[2]]$key<-6 

uzyskać

$c 
[1] "a" 

$d 
[1] "b" 

$key 
[1] 6 

zamiast

$c 
[1] "a" 

$d 
[1] "b" 

$112233 
[1] 6 

Próbowałem, używając get lub wiele możliwych kombinacji przy użyciu innych [] lub [[]] ale nic nie wydaje się działać. Proszę o poradę.

Odpowiedz

6
key<-"112233" 
list1 <- list(a = 2, b = 3) 
list2 <- list(c = "a", d = "b") 
mylist <- list(list1, list2) 
mylist[[2]][key]<-6 

[[1]] 
[[1]]$a 
[1] 2 

[[1]]$b 
[1] 3 


[[2]] 
[[2]]$c 
[1] "a" 

[[2]]$d 
[1] "b" 

[[2]]$`112233` 
[1] 6 

Aktualizacja zgodnie z komentarzem @ user20650: Zamiast konwertowania kluczową zmienną ciąg na początku, można również zrobić:

mylist[[2]][as.character(key)] <- 6 
+3

Bijcie mnie przez mniej niż minutę! Tak, działa to dobrze, o ile "klucz" jest postacią. Jeśli "klucz" ma wartość numeryczną, wówczas tworzone są również wszystkie elementy pośrednie na liście (z wartościami NULL). – mikeck

Powiązane problemy