我有一个向量
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什么?
(最终我想遍历所有元素并将它们中的每一个与其余元素进行比较 - 也许这是相关的。)
这个用例是一个常见的用例,包含在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)。
不幸的是,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)