2012-01-18 83 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