Przekaż listę funkcji do oceny „microbenchmark”
Aug 25 2020
Mam katalog plików o nazwie dir.
Chciałbym uruchomić funkcję wywoływaną f(file, arg1, arg2)na każdym z plików w dir.
Chcę porównać każdą z tych funkcji w programie microbenchmark.
Jak mogę utworzyć listę funkcji wywoływanych funcsdo oceny, która wygląda następująco:
$a f("file1", arg1, arg2) $b
f("file2", arg1, arg2)
$c
f("file3", arg1, arg2)
Żebym mógł po prostu zadzwonić microbenchmark::microbenchmark(funcs)?
Odpowiedzi
2 MrFlick Aug 25 2020 at 08:53
Musisz utworzyć listę nieocenionych wyrażeń. Jednym ze sposobów jest lapplyużycie parametrów w bquotecelu zbudowania tych wyrażeń. Następnie pamiętaj, aby sflashować tę listę do list=parametru microbenchmark(). Na przykład
tests <- lapply(paste0("file", 1:3), function(x) {
bquote(f(.(x), arg1, arg2))
})
microbenchmark(list=tests)
Oto powtarzalny przykład
tests <- lapply(c(1,10,100), function(x) {
bquote(rnorm(.(x)))
})
microbenchmark::microbenchmark(list=tests)
# Unit: microseconds
# expr min lq mean median uq max neval cld
# rnorm(1) 1.4 1.5 1.783 1.6 1.7 15.5 100 a
# rnorm(10) 1.9 2.1 2.253 2.2 2.3 4.0 100 b
# rnorm(100) 7.8 8.1 8.741 8.5 9.0 12.7 100 c