2016-10-22 2 views
5

julia-Arrays unterstützen Indizierung mit mehreren Bereichen Machen Sie es wie die folgendeIndex-Array mit mehreren Bereichen

dat = Array(1:10) 
# trying to get dat[[1:3, 6:8]] to result in 
dat[[1,2,3,6,7,8]] 

der Suche nach etwas, das wie das R Äquivalent dat[c(1:3, 6:8)] sein würde?

Antwort

8

Die direkte Äquivalent der R-Version ist

v = 1:10 
v[ [1:3; 6:8] ] 

seit ; der Betreiber Verkettung ist:

julia> [1:3; 6:8] 
6-element Array{Int64,1}: 
1 
2 
3 
6 
7 
8 

Sie auch bei chain im Iterators.jl Paket aussehen wollen: https://github.com/JuliaLang/Iterators.jl

+0

danke das war einfach, nicht sicher, wie ich das miseed – jenesaisquoi

+1

Der leichte Gotcha ist, dass die Verkettung cr eates ein neues intermediate array, weshalb die Kette wahrscheinlich effizienter ist, wenn die Objekte groß sind. –

+2

'Iterators.chain' gibt einen iterierbaren, nicht indexierbaren Array-Typ zurück, so dass Sie ihn nicht als Index verwenden können. Es sind einige faule Verkettungsbibliotheken registriert, aber ich habe keine von ihnen versucht (VirtualArrays, CatViews). In diesem Fall wäre ich * sehr * überrascht, wenn diese faulen Typen schneller wären. Die Zuordnung ist ziemlich billig, aber die Indexierung in faule Verkettungen erfordert eine Indexsuche oder Hashmap oder ähnliches. –

Verwandte Themen