Tableau d'index sans éléments
J'ai un vecteur
a = Vector(1:4)
[1, 2, 3, 4]
et je veux l'indexer sur tous les éléments sauf le troisième pour obtenir
[1, 2, 4]
dans Rvous pourriez faire a[-3]. Que faites-vous Julia?
(Finalement, je veux parcourir tous les éléments et comparer chacun d'eux au reste - peut-être que c'est pertinent.)
Réponses
La syntaxe Julia sera malheureusement plus verbeuse que celles de R:
julia> a[1:end .!== 3]
3-element Array{Int64,1}:
1
2
4
Une autre option consiste à faire muter un:
julia> deleteat!(a,3)
3-element Array{Int64,1}:
1
2
4
Si vos données se trouvent dans un, DataFramevous pouvez obtenir une meilleure syntaxe:
julia> df = DataFrame(a=1:4);
julia> df[Not(3),:]
3×1 DataFrame
│ Row │ a │
│ │ Int64 │
├─────┼───────┤
│ 1 │ 1 │
│ 2 │ 2 │
│ 3 │ 4 │
et quand DataFramesest importé Notfonctionnera également avec un Vector:
julia> a[Not(3)]
3-element Array{Int64,1}:
1
2
4
Ce cas d'utilisation est courant et est couvert par le package InvertedIndices.jl . Si vous l'installez, vous pouvez exécuter:
julia> using InvertedIndices
julia> a = 1:4
1:4
julia> a[Not(3)]
3-element Array{Int64,1}:
1
2
4
De plus, certains packages (comme DataFrames.jl) chargent automatiquement ce package (donc si vous utilisez par exemple DataFrames.jl, vous n'avez pas à installer et à charger InvertedIndices.jl séparément).
je n'ai pas vu
julia> a[1:end .≠ 3]
3-element Array{Int64,1}:
1
2
4
ou
julia> a[eachindex(a) .≠ 3]
3-element Array{Int64,1}:
1
2
4
mentionné, mais il y a peut-être une bonne raison?
EDIT : Je me suis trompé, la première est en fait la même que la première réponse de Bogumil sauf qu'elle !==a été remplacée par≠