我有一个R列表,看起来如下

> str(prices)
List of 4
 $ ID   : int 102894616
 $ delay: int 8
 $ 47973      :List of 12
  ..$ id       : int 47973
  ..$ index        : int 2
  ..$ matched: num 5817
 $ 47972      :List of 12
..


显然,我可以通过例如访问任何元素price $“ 47973” $ id。

但是,我将如何编写一个参数化对该列表的访问的函数?例如带有签名的访问功能:

access <- function(index1, index2) { .. }


可以如下使用:

> access("47973", "matched")
5817


这似乎很琐碎,但我无法编写这样的函数。感谢您的指导。

最佳答案

使用'[['代替'$'似乎有效:

prices <- list(
    `47973` = list( id = 1, matched = 2))

access <- function(index1, index2) prices[[index1]][[index2]]
access("47973","matched")




至于为什么它可以代替:
access <- function(index1, index2) prices$index1$index2(我想这是您尝试过的吗?)是因为在这里没有评估index1index2。也就是说,它将在列表中搜索名为index1的元素,而不是此对象求值的元素。

08-24 14:46