2015-05-16 16 views
7

Farz edelim ki 2 boyutlu bir dizilim var ve her bir sütununa birkaç fonksiyon uygulamak istiyorum. İdeal olarak sonuçları bir matris biçiminde (fonksiyon başına bir satır ve giriş sütunu başına bir sütun) geri almak istiyorum.Julia için Sapply (R den) eşdeğer mi?

Aşağıdaki kod, istediğim değerleri, ancak Array dizisi olarak üretir.

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

bir diğer benzer burada [Julia: use of pmap with matrices

daha iyi bir söz dizimi yerine diziler dizisinin, bir 2 boyutlu dizi şeklinde geri sonuçlar elde etmek için var mı?

Ne gibi gerçekten istiyorum ben tek bir seçenek buldum biraz etrafına oynadıktan sonra R. [https://stat.ethz.ch/R-manual/R-devel/library/base/html/lapply.html]

+0

maplices (f, A, 2) '' f' yerine _columns_ yerine ** A ** yerine 'f' uygulamıyor mu? – rickhg12hs

+1

[DataFrames] 'da ['aggregate' işlevi]' ne (http://dataframesjl.readthedocs.org/en/latest/split_apply_combine.html) bakabilirsiniz (https://github.com/ JuliaStats/DataFrames.jl) paketi. – rickhg12hs

cevap

7

Sen

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

değil, aynı zamanda gayet son örnekte olduğu gibi comprehensions ve splatting kullanma gibi isimsiz işlevini kullanabilirsiniz. Çok büyük diziler için, transpoz ve splatting tarafından getirilen geçici tahsisleri önlemek isteyebilirsiniz, ancak çoğu durumda buna dikkat etmek zorunda değilsiniz.

2

den sapply benzer bir işlevselliğe sahip bir şeydir, ancak daha iyi yolları olup olmadığını ben işitme hala ilgileniyorum bunu yapmak.

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