Indeks Array tanpa Elemen
Saya memiliki vektor
a = Vector(1:4)
[1, 2, 3, 4]
dan saya ingin mengindeksnya ke semua elemen kecuali yang ketiga untuk mendapatkan
[1, 2, 4]
di RAnda bisa melakukan a[-3]. Apa yang kamu lakukan Julia?
(Akhirnya saya ingin mengulang semua elemen dan membandingkannya masing-masing dengan yang lain - mungkin ini relevan.)
Jawaban
Sayangnya sintaks Julia akan lebih bertele-tele daripada sintaks R:
julia> a[1:end .!== 3]
3-element Array{Int64,1}:
1
2
4
Pilihan lainnya adalah dengan mengubah:
julia> deleteat!(a,3)
3-element Array{Int64,1}:
1
2
4
Jika data Anda dalam DataFramedaripada Anda bisa mendapatkan sintaks yang lebih baik:
julia> df = DataFrame(a=1:4);
julia> df[Not(3),:]
3×1 DataFrame
│ Row │ a │
│ │ Int64 │
├─────┼───────┤
│ 1 │ 1 │
│ 2 │ 2 │
│ 3 │ 4 │
dan ketika DataFramesdiimpor Notjuga akan bekerja dengan Vector:
julia> a[Not(3)]
3-element Array{Int64,1}:
1
2
4
Kasus penggunaan ini umum terjadi dan dicakup oleh paket InvertedIndices.jl . Jika Anda menginstalnya maka Anda dapat menjalankan:
julia> using InvertedIndices
julia> a = 1:4
1:4
julia> a[Not(3)]
3-element Array{Int64,1}:
1
2
4
Juga beberapa paket (seperti DataFrames.jl) secara otomatis memuat paket ini (jadi jika Anda misalnya menggunakan DataFrames.jl Anda tidak perlu menginstal dan memuat InvertedIndices.jl secara terpisah).
saya belum melihat
julia> a[1:end .≠ 3]
3-element Array{Int64,1}:
1
2
4
atau
julia> a[eachindex(a) .≠ 3]
3-element Array{Int64,1}:
1
2
4
disebutkan, tapi mungkin ada alasan bagus?
EDIT : Saya salah, yang pertama sebenarnya sama dengan jawaban pertama Bogumil kecuali !==sudah diganti dengan≠