Matriz de índice sin elementos
Tengo un vector
a = Vector(1:4)
[1, 2, 3, 4]
y quiero indexarlo a todos los elementos menos al tercero para obtener
[1, 2, 4]
en Rque podrías hacer a[-3]. ¿Qué se hace en Julia?
(Eventualmente quiero recorrer todos los elementos y comparar cada uno de ellos con el resto, tal vez esto sea relevante).
Respuestas
La sintaxis de Julia será, lamentablemente, más detallada que la de R:
julia> a[1:end .!== 3]
3-element Array{Int64,1}:
1
2
4
Otra opción es mutar a:
julia> deleteat!(a,3)
3-element Array{Int64,1}:
1
2
4
Si sus datos están dentro de un DataFrameque puede obtener una sintaxis mejor:
julia> df = DataFrame(a=1:4);
julia> df[Not(3),:]
3×1 DataFrame
│ Row │ a │
│ │ Int64 │
├─────┼───────┤
│ 1 │ 1 │
│ 2 │ 2 │
│ 3 │ 4 │
y cuando DataFramesse importa Nottambién funcionará con Vector:
julia> a[Not(3)]
3-element Array{Int64,1}:
1
2
4
Este caso de uso es común y está cubierto por el paquete InvertedIndices.jl . Si lo instala, puede ejecutar:
julia> using InvertedIndices
julia> a = 1:4
1:4
julia> a[Not(3)]
3-element Array{Int64,1}:
1
2
4
Además, algunos paquetes (como DataFrames.jl) cargan automáticamente este paquete (por lo que si, por ejemplo, usa DataFrames.jl, no tiene que instalar y cargar InvertedIndices.jl por separado).
no he visto
julia> a[1:end .≠ 3]
3-element Array{Int64,1}:
1
2
4
o
julia> a[eachindex(a) .≠ 3]
3-element Array{Int64,1}:
1
2
4
mencionado, pero tal vez haya una buena razón?
EDITAR : Estaba equivocado, la primera es en realidad la misma que la primera respuesta de Bogumil, excepto que !==ha sido reemplazada por≠