我正在浏览hadley 的函数指南中的一些示例,并遇到了一个意想不到的问题。
假设我有一个模型对象列表,
x=1:3;y=3:1; bah <- list(lm(x~y),lm(y~x))
并希望从中提取一些东西(正如哈德利关于名为“试验”的列表的问题中所建议的那样)。我期待其中一个工作:
lapply(bah,`$`,i='call') # or...
lapply(bah,`$`,call)
但是,这些返回空值。似乎我没有滥用该$
功能,因为这些东西有效:
`$`(bah[[1]],i='call')
`$`(bah[[1]],call)
无论如何,我只是将其作为一种练习,并且很好奇我的错误在哪里。我知道我可以使用匿名函数,但认为必须有一种方法可以使用类似于我最初的非解决方案的语法。我浏览了$
中提到的地方?Extract
,但没有看到任何明显的解释。
我刚刚意识到这有效:
lapply(bah,`[[`,i='call')
和这个
lapply(bah,function(x)`$`(x,call))
也许这只是归结为一些lapply
需要匿名函数的巫术,而这些函数不需要匿名函数?我觉得我以前在 SO 的某个地方听说过。