Я работал над несколькими проектами, которые потребовали от меня сделать множество подмножеств в списке и, в то время как код профилирования я понял, что подход [[ "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
Мой вопрос: просто ли это поведение истинно универсально, и я должен избегать подмножества $, где это возможно, или самый эффективный выбор зависит от некоторых других факторов?