如何在空向量的特定位置插入元素?
How to insert an element at a specific position of an empty vector?
在 R 中,我们可以创建一个空向量,可以在该向量的任何位置插入一个元素。
示例:
> x <- c()
> x[1] = 10
> x[4] = 20
最后的结果是:
> x
[1] 10 NA NA 20
我想用 Julia 做一些类似的事情,但找不到方法。
“附加”功能不会执行类似的操作。
有人能帮忙吗?
您需要分两步完成:
- 首先调整矢量的大小或创建一个适当大小的矢量。
- 接下来相应地设置元素。
由于您来自 R,我假设您希望向量最初填充缺失值。这是执行此操作的方法。
在我的示例中,我假设您要在向量中存储整数。在两个选项加载 Missings.jl 包之前:
using Missings
选项 1. 从空向量开始
julia> x = missings(Int, 0)
Union{Missing, Int64}[]
julia> resize!(x, 4)
4-element Vector{Union{Missing, Int64}}:
missing
missing
missing
missing
julia> x[1] = 10
10
julia> x[4] = 40
40
julia> x
4-element Vector{Union{Missing, Int64}}:
10
missing
missing
40
选项 2. 预分配向量
julia> x = missings(Int, 4)
4-element Vector{Union{Missing, Int64}}:
missing
missing
missing
missing
julia> x[1] = 10
10
julia> x[4] = 40
40
Julia 不自动调整向量大小的原因是为了安全。有时它会很有用,但大多数时候如果 x
是一个空向量而你写 x[4] = 40
它是代码中的一个错误,Julia 会捕获这种情况。
编辑
您可以做的是:
function setvalue(vec::Vector, idx, val)
@assert idx > 0
if idx > length(vec)
resize!(vec, idx)
end
vec[idx] = val
return vec
end
在 R 中,我们可以创建一个空向量,可以在该向量的任何位置插入一个元素。 示例:
> x <- c()
> x[1] = 10
> x[4] = 20
最后的结果是:
> x
[1] 10 NA NA 20
我想用 Julia 做一些类似的事情,但找不到方法。 “附加”功能不会执行类似的操作。
有人能帮忙吗?
您需要分两步完成:
- 首先调整矢量的大小或创建一个适当大小的矢量。
- 接下来相应地设置元素。
由于您来自 R,我假设您希望向量最初填充缺失值。这是执行此操作的方法。
在我的示例中,我假设您要在向量中存储整数。在两个选项加载 Missings.jl 包之前:
using Missings
选项 1. 从空向量开始
julia> x = missings(Int, 0)
Union{Missing, Int64}[]
julia> resize!(x, 4)
4-element Vector{Union{Missing, Int64}}:
missing
missing
missing
missing
julia> x[1] = 10
10
julia> x[4] = 40
40
julia> x
4-element Vector{Union{Missing, Int64}}:
10
missing
missing
40
选项 2. 预分配向量
julia> x = missings(Int, 4)
4-element Vector{Union{Missing, Int64}}:
missing
missing
missing
missing
julia> x[1] = 10
10
julia> x[4] = 40
40
Julia 不自动调整向量大小的原因是为了安全。有时它会很有用,但大多数时候如果 x
是一个空向量而你写 x[4] = 40
它是代码中的一个错误,Julia 会捕获这种情况。
编辑
您可以做的是:
function setvalue(vec::Vector, idx, val)
@assert idx > 0
if idx > length(vec)
resize!(vec, idx)
end
vec[idx] = val
return vec
end