没有元素的索引数组

Geo*_*ery 8 julia

我有一个向量

a = Vector(1:4)

[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我想将它索引到所有元素,要获取的第三个元素

[1, 2, 4]
Run Code Online (Sandbox Code Playgroud)

R你可以做的a[-3]。你在做Julia什么?

(最终我想遍历所有元素并将它们中的每一个与其余元素进行比较 - 也许这是相关的。)

Bog*_*ski 7

这个用例是一个常见的用例,包含在InvertedIndices.jl包中。如果你安装它,那么你可以运行:

julia> using InvertedIndices

julia> a = 1:4
1:4

julia> a[Not(3)]
3-element Array{Int64,1}:
 1
 2
 4
Run Code Online (Sandbox Code Playgroud)

还有一些包(比如DataFrames.jl)会自动加载这个包(所以如果你使用DataFrames.jl,你就不必单独安装和加载InvertedIndices.jl)。


Prz*_*fel 6

不幸的是,Julia 语法比 R 语法更冗长:

julia> a[1:end .!== 3]
3-element Array{Int64,1}:
 1
 2
 4
Run Code Online (Sandbox Code Playgroud)

另一种选择是改变一个:

julia> deleteat!(a,3)
3-element Array{Int64,1}:
 1
 2
 4
Run Code Online (Sandbox Code Playgroud)

如果您的数据在 a 内DataFrame,您可以获得更好的语法:

julia> df = DataFrame(a=1:4);

julia> df[Not(3),:]
3×1 DataFrame
? Row ? a     ?
?     ? Int64 ?
???????????????
? 1   ? 1     ?
? 2   ? 2     ?
? 3   ? 4     ?
Run Code Online (Sandbox Code Playgroud)

何时DataFrames导入Not也适用于Vector

julia> a[Not(3)]
3-element Array{Int64,1}:
 1
 2
 4
Run Code Online (Sandbox Code Playgroud)