我正在经历一些例子 https://github.com/hadley/devtools/wiki/Functionals#exercises-1在哈德利的泛函指南中,遇到了一个意想不到的问题。
假设我有一个模型对象列表,
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')
and this
lapply(bah,function(x)`$`(x,call))
也许这只是归结为一些lapply
巫术需要匿名函数,但不需要?我觉得我以前在 SO 的某个地方听过这句话。