我一直在从事一些需要我进行大量列表子集化的项目,在分析代码时,我意识到 object[["nameHere"]] 对子集列表的方法通常比 object$nameHere 方法更快。
例如,如果我们创建一个包含命名组件的列表:
a.long.list <- as.list(rep(1:1000))
names(a.long.list) <- paste0("something",1:1000)
为什么是这样:
system.time (
for (i in 1:10000) {
a.long.list[["something997"]]
}
)
user system elapsed
0.15 0.00 0.16
比这更快:
system.time (
for (i in 1:10000) {
a.long.list$something997
}
)
user system elapsed
0.23 0.00 0.23
我的问题只是这种行为是否普遍适用,我应该尽可能避免使用 $ 子集,还是最有效的选择取决于其他一些因素?