Tablica indeksów bez elementów
Mam wektor
a = Vector(1:4)
[1, 2, 3, 4]
i chcę go zaindeksować do wszystkich elementów oprócz trzeciego do pobrania
[1, 2, 4]
w czym Rmógłbyś to zrobić a[-3]. Co robisz w Julia?
(Ostatecznie chcę przejrzeć wszystkie elementy i porównać każdy z nich z resztą - może to ma znaczenie).
Odpowiedzi
Składnia Julii będzie niestety bardziej szczegółowa niż składnia R:
julia> a[1:end .!== 3]
3-element Array{Int64,1}:
1
2
4
Inną opcją jest zmutowanie:
julia> deleteat!(a,3)
3-element Array{Int64,1}:
1
2
4
Jeśli twoje dane znajdują się w obrębie a DataFrame, możesz uzyskać ładniejszą składnię:
julia> df = DataFrame(a=1:4);
julia> df[Not(3),:]
3×1 DataFrame
│ Row │ a │
│ │ Int64 │
├─────┼───────┤
│ 1 │ 1 │
│ 2 │ 2 │
│ 3 │ 4 │
a kiedy DataFramesjest importowany, Notbędzie również działać z Vector:
julia> a[Not(3)]
3-element Array{Int64,1}:
1
2
4
Ten przypadek użycia jest powszechny i jest objęty pakietem InvertedIndices.jl . Jeśli go zainstalujesz, możesz uruchomić:
julia> using InvertedIndices
julia> a = 1:4
1:4
julia> a[Not(3)]
3-element Array{Int64,1}:
1
2
4
Również niektóre pakiety (jak DataFrames.jl) automatycznie ładują ten pakiet (więc jeśli np. Używasz DataFrames.jl, nie musisz oddzielnie instalować i ładować InvertedIndices.jl).
nie widziałem
julia> a[1:end .≠ 3]
3-element Array{Int64,1}:
1
2
4
lub
julia> a[eachindex(a) .≠ 3]
3-element Array{Int64,1}:
1
2
4
wspomniano, ale może jest dobry powód?
EDYCJA : Myliłem się, pierwsza odpowiedź jest właściwie taka sama, jak pierwsza odpowiedź Bogumiła, z wyjątkiem !==tego, że została zastąpiona≠