【发布时间】:2013-09-12 19:50:57
【问题描述】:
如果是这样,为什么我们需要sapply?
x <- list(a=1, b=1)
y <- list(a=1)
JSON <- rep(list(x,y),10000)
microbenchmark(sapply(JSON, function(x) x$a),
unlist(lapply(JSON, function(x) x$a)),
sapply(JSON, "[[", "a"),
unlist(lapply(JSON, "[[", "a"))
)
Unit: milliseconds
expr min lq median uq max neval
sapply(JSON, function(x) x$a) 25.22623 28.55634 29.71373 31.76492 88.26514 100
unlist(lapply(JSON, function(x) x$a)) 17.85278 20.25889 21.61575 22.67390 78.54801 100
sapply(JSON, "[[", "a") 18.85529 20.06115 21.53790 23.42480 38.56610 100
unlist(lapply(JSON, "[[", "a")) 11.33859 11.69198 12.25329 13.37008 27.81361 100
【问题讨论】:
-
可能是因为 sapply 调用 lapply。
-
我们不需要
sapply。它的存在纯粹是为了方便。 -
注意
unlist(list(a=1:2))时名称会发生什么;对于unlist(..., use.names=FALSE),它通常更快(有时明显如此)和更安全。
标签: r