2015-05-16 84 views
7

假設我有一個2維數組,我想將幾​​個函數應用到它的每一列。理想情況下,我想以矩陣的形式返回結果(每個函數一行,每個輸入列一列)。Sapply(來自R)相當於Julia?

以下代碼將生成我想要的值,但是會生成一個陣列數組。

A = rand(10,10) 
[mapslices(f, A, 1) for f in [mean median iqr]] 

另一個類似的例子是在這裏[Julia: use of pmap with matrices

是否有用於獲取結果早在2維陣列形式的更好的語法,而不是數組的數組?

我真正喜歡的是什麼與R. [https://stat.ethz.ch/R-manual/R-devel/library/base/html/lapply.html]

+0

'mapslices(f,A,2)'不適用'f'到** A **的_rows_而不是_columns_? – rickhg12hs

+1

您可能需要查看[DataFrames](https://github.com/)中的['聚合函數](http://dataframesjl.readthedocs.org/en/latest/split_apply_combine.html) JuliaStats/DataFrames.jl)包。 – rickhg12hs

回答

7

您可以使用匿名函數作爲

mapslices(t -> [mean(t), median(t), iqr(t)], A, 1) 

但使用內涵和潑濺,在您的最後一個例子,也未嘗不可。對於非常大的數組,您可能想要避免由轉置和濺射引入的臨時分配,但在大多數情況下,您不必注意這一點。

2

類似sapply一個功能張望了一下打後,我發現一個選項,但我仍然希望聽到,如果有任何更好的方法做到這一點。

[[mapslices(f, A, 1)' for f in [mean median iqr]]...]