通过函数参数访问 R 列表元素

jk3*_*000 3 syntax r list

我有一个 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
..
Run Code Online (Sandbox Code Playgroud)

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

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

access <- function(index1, index2) { .. }
Run Code Online (Sandbox Code Playgroud)

可以如下使用:

> access("47973", "matched")
5817
Run Code Online (Sandbox Code Playgroud)

这看起来很微不足道,但我无法编写这样的函数。感谢您的指点。

Sac*_*amp 5

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

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

access <- function(index1, index2) prices[[index1]][[index2]]
access("47973","matched")
Run Code Online (Sandbox Code Playgroud)

至于为什么这有效而不是:( access <- function(index1, index2) prices$index1$index2我认为这是你尝试过的?)这是因为这里index1index2没有被评估。也就是说,它在列表中搜索名为的元素,index1而不是该对象的计算结果。