我正在尋找一個地道的和緊湊的方式在朱莉婭達到什麼我會在R請勿與朱莉婭 - R的的代表相當於()的時間參數
v1=1:5;v2=5:1;out=rep(v1,times=v2);out
# 1 1 1 1 1 2 2 2 2 3 3 3 4 4 5
即複製的每個元素在向量v1
一些由矢量v2
中的相應元素給出的時間。有什麼想法嗎?
我正在尋找一個地道的和緊湊的方式在朱莉婭達到什麼我會在R請勿與朱莉婭 - R的的代表相當於()的時間參數
v1=1:5;v2=5:1;out=rep(v1,times=v2);out
# 1 1 1 1 1 2 2 2 2 3 3 3 4 4 5
即複製的每個元素在向量v1
一些由矢量v2
中的相應元素給出的時間。有什麼想法嗎?
# Pkg.clone("https://github.com/ChrisRackauckas/VectorizedRoutines.jl")
# Will be Pkg.add("VectorizedRoutines") after being added to package system
using VectorizedRoutines
v1=1:5
v2 = 5:-1:1
R.rep(v1,each = v2)
實現通過aireties的建議(提高了打字位,所以你不必收集)的關RLEVectors.jl的。
這是一個軟件包,我將R/MATLAB/Python中的所有矢量化例程集合在一起,以便將函數(和想法)移植到Julia更簡單。隨意在Github存儲庫中打開問題,以獲得要實現的功能建議,我應該瞭解的其他軟件包中實現的功能,與其他語言不匹配的語法或者是否存在其他問題。如果你實現這樣的功能,也可以隨意給出一個拉取請求。如果您需要幫助,請不要害怕使用基本功能進行拉取請求,我可以幫助您。
這裏是一個選項使用數組內涵:
v1 = 1:5;
v2 = 5:-1:1;
out = vcat([ [v1[idx] for n = 1:v2[idx]] for idx = 1:length(v1) ]...)
另外,如果你想要的東西靠近R語法,您可以使用rep()
函數從RLEVectors包:
## Pkg.add("RLEVectors")
using RLEVectors
out2 = rep(collect(v1), each = collect(v2))
由於是,out2
將是一個帶有運行長度編碼的向量。它的功能與大多數其他矢量的功能類似,在某些情況下,內存和運算速度會提高。但是,如果你想要一個普通的矢量,只需使用collect(out2)
。
非常感謝,非常感謝!只是在這裏學習朱莉婭...... –
@TomWenseleers當然可以。另請參閱我更新的答案,另一個選項可能更接近您熟悉的R語法。 –
非常感謝 - 這確實更快,更有效率! –
如果你有時間,你還會介意快速瀏覽http://codereview.stackexchange.com/questions/134926/benchmarks-of-technical-programming-languages-r-julia-mathematica-matlab-fo - I做了一個R到朱莉婭那裏的一個小例子程序,但是我在朱莉婭的基準測試結果很差 - 你可能馬上告訴我我做錯了什麼? –