我一直对那些要求我做了很多列表子集的几个项目,而配置代码,我意识到,对象[[“nameHere”]的方法来子集划分名单,通常是比对象$ 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
我的问题是,这种行为简直是真普遍,我应该避免$子集尽可能或做最有效的选择依赖于某些其他因素?