Matriz de índice sem elementos
Eu tenho um vetor
a = Vector(1:4)
[1, 2, 3, 4]
e quero indexá-lo a todos os elementos, exceto o terceiro, para obter
[1, 2, 4]
em Rvocê poderia fazer a[-3]. O que você faz Julia?
(Eventualmente, quero percorrer todos os elementos e comparar cada um deles com o resto - talvez isso seja relevante.)
Respostas
A sintaxe de Julia será, infelizmente, mais detalhada do que a de R:
julia> a[1:end .!== 3]
3-element Array{Int64,1}:
1
2
4
Outra opção é transformar um:
julia> deleteat!(a,3)
3-element Array{Int64,1}:
1
2
4
Se seus dados estiverem dentro de um, DataFramevocê pode obter uma sintaxe mais agradável:
julia> df = DataFrame(a=1:4);
julia> df[Not(3),:]
3×1 DataFrame
│ Row │ a │
│ │ Int64 │
├─────┼───────┤
│ 1 │ 1 │
│ 2 │ 2 │
│ 3 │ 4 │
e quando DataFramesé importado Nottambém funcionará com Vector:
julia> a[Not(3)]
3-element Array{Int64,1}:
1
2
4
Este caso de uso é comum e é coberto pelo pacote InvertedIndices.jl . Se você instalá-lo, poderá executar:
julia> using InvertedIndices
julia> a = 1:4
1:4
julia> a[Not(3)]
3-element Array{Int64,1}:
1
2
4
Além disso, alguns pacotes (como DataFrames.jl) carregam automaticamente este pacote (então se você, por exemplo, usar DataFrames.jl, você não precisa instalar e carregar InvertedIndices.jl separadamente).
Eu não vi
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
mencionado, mas talvez haja um bom motivo?
EDIT : Eu estava errado, a primeira é na verdade igual à primeira resposta de Bogumil, exceto !==que foi substituída por≠