我在hadley的功能指南中经历了一些例子,并遇到了意想不到的问题.
假设我有一个模型对象列表,
x=1:3;y=3:1; bah <- list(lm(x~y),lm(y~x))
Run Code Online (Sandbox Code Playgroud)
并希望从每个中提取一些东西(如hadley关于名为"试验"的列表的问题所示).我期待其中一个工作:
lapply(bah,`$`,i='call') # or...
lapply(bah,`$`,call)
Run Code Online (Sandbox Code Playgroud)
但是,这些返回null.好像我没有滥用这个$功能,因为这些东西有效:
`$`(bah[[1]],i='call')
`$`(bah[[1]],call)
Run Code Online (Sandbox Code Playgroud)
无论如何,我只是把它作为一个练习,我很好奇我的错误.我知道我可以使用匿名函数,但认为必须有一种方法来使用类似于我最初的非解决方案的语法.我已经看过了$所提到的地方?Extract,但没有看到任何明显的解释.
我才意识到这有效:
lapply(bah,`[[`,i='call')
Run Code Online (Sandbox Code Playgroud)
还有这个
lapply(bah,function(x)`$`(x,call))
Run Code Online (Sandbox Code Playgroud)
也许这只是归结为一些lapply需要匿名功能而不需要任何功能的伏都教?我觉得我以前在某个地方听说过.