2012-01-18 2 views
2

Я хотел бы спросить, может ли кто-нибудь найти ошибку во 2-й конструкции за то, что не получил тот же список, что и в 1-й конструкции. Есть ли способ ссылаться на имя элемента списка? Например, некоторая функция (myList [[1]]) == a1?R: список, содержащий списки

# construction #1 
myList <- list(a1 = list(a2 = list("a21", "a22")), b1 = list("b1", "b2")) 

# construction #2 
myList     <- list() 
myList[[1]]    <- list(a1=list()) 
myList[[1]][[1]]  <- list(a2=list()) 
myList[[1]][[1]][[1]] <- "a21" 
myList[[1]][[1]][[2]] <- "a22" 
myList[[2]]    <- list(b1=list()) 
myList[[2]][[1]]  <- "b1" 
myList[[2]][[2]]  <- "b2" 

Большое спасибо заранее

ответ

5

Давайте сделаем это проще и смотреть только на первой линии:

myList <- list(a1 = "anything") 
# vs 
myList <- list() 
myList[[1]] <- list(a1="anything") 

В первой конструкции, слот 1 из верхнего списка с именем " a1 "и содержит" все ". Во второй конструкции слот 1 верхнего списка не назван ничем и содержит список, первый слот которого называется «a1» и содержит «что угодно».

Чтобы сделать их похожими, попробуйте:

myList <- list() 
myList[["a1"]] <- "anything" 
+0

Вы правы. Большое спасибо –

+0

И есть ли способ получить имя «a1» вместо контента? –

+0

Чтобы получить имена, просто используйте 'names (myList)'. Для имен списка, содержащегося в списке, просто сначала извлеките этот список (например, 'names (myList [[1]]). –