multicore
庫中是否有像sapply
這樣的東西?或者我必須unlist(mclapply(..))
才能實現這一目標?多核:: sapply?
如果它不存在:推理是什麼?
如果這是一個愚蠢的問題,請提前致謝!
multicore
庫中是否有像sapply
這樣的東西?或者我必須unlist(mclapply(..))
才能實現這一目標?多核:: sapply?
如果它不存在:推理是什麼?
如果這是一個愚蠢的問題,請提前致謝!
如果你看看sapply
代碼(和它的輔助功能simplify2array
),你會看到unlist(obj)
正是將在obj是項目的列表中的所有的length==1
的情況下完成的。然而,sapply
比僅僅列表清單複雜得多。目前還不清楚的是你正在努力解決什麼問題。
在圖書館parallel
,你有mcmapply
其中,像在base
mapply
,需要SIMPLIFY
說法。默認爲TRUE
。下面是一個例子使用:
library(parallel)
mcmapply(sqrt,split(1:8,1:8))
# 1 2 3 4 5 6 7 8
# 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427
比較這對使用mclapply
。
mclapply(split(1:8,1:8),sqrt)
# $`1`
# [1] 1
#
# $`2`
# [1] 1.414214
# ...
然而,在某些方面,我同意奇怪的是沒有'mcsapply'。我一直認爲奇怪的是你無法將'SIMPLIFY'參數傳遞給'lapply',但我懷疑這就是爲什麼你無法將'SIMPLIFY'參數傳遞給'mclapply'的原因。 – nograpes 2013-02-23 18:39:10
是不是隻是這種情況下,mclapply正在列表上作用,因此默認情況下返回列表的方式與sapply對載體的作用相同,默認情況下簡化爲true? – russellpierce 2015-12-09 14:25:58
@rpierce實際上'sapply'也在列表中起作用(並且'lapply'也對矢量起作用)。 'sapply'和'lapply'唯一的區別就是返回值的結構。 'lapply'將*總是*返回一個列表,而'sapply'則可能返回一個向量或一個列表。返回值的名稱也不同。我認爲創建一個與'sapply'具有相同行爲的'mcsapply'會很有意義。 – nograpes 2015-12-09 19:28:16