使用get()访问r中的列表元素

mik*_*ike 14 string loops r list

我正在尝试使用get()来访问r中的列表元素,但是收到错误.

example.list <- list()
example.list$attribute <- c("test")
get("example.list") # Works just fine
get("example.list$attribute") # breaks
Run Code Online (Sandbox Code Playgroud)

get("example.list $ attribute")出错:找不到对象'example.list $ attribute'

有小费吗?我正在循环一个标识列表名称的字符串向量,这将非常有用.

Jos*_*ien 24

这是您可能正在寻找的咒语:

get("attribute", example.list)
# [1] "test"
Run Code Online (Sandbox Code Playgroud)

或许,根据您的情况,这个:

get("attribute", eval(as.symbol("example.list")))
# [1] "test"

# Applied to your situation, as I understand it...

example.list2 <- example.list 
listNames <- c("example.list", "example.list2")
sapply(listNames, function(X) get("attribute", eval(as.symbol(X))))
# example.list example.list2 
#       "test"        "test" 
Run Code Online (Sandbox Code Playgroud)


Tom*_*mmy 6

为什么不简单地:

example.list <- list(attribute="test")
listName <- "example.list"
get(listName)$attribute

# or, if both the list name and the element name are given as arguments:
elementName <- "attribute"
get(listName)[[elementName]]
Run Code Online (Sandbox Code Playgroud)