2012-01-18 87 views
2

我想問問有沒有人能夠找到第二個建設中的錯誤因爲沒有收到與第一個建設中相同的列表。有沒有辦法引用名稱的列表元素?例如,somefunction(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「幷包含」任何東西「。在第二種結構中,頂部列表的第一個槽沒有命名,並且包含一個列表,其第一個槽被命名爲「a1」並且包含「任何」。

爲了使它們類似,嘗試:

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

你是對的。非常感謝 – 2012-01-18 23:16:08

+0

有沒有辦法讓名字「a1」而不是內容? – 2012-01-18 23:24:38

+0

要獲取名稱,只需使用'names(myList)'。對於列表中包含的列表名稱,只需首先提取該列表(例如'names(myList [[1]])')。 – 2012-01-19 12:43:19