我想创建一个未定义值的矩阵 A 并让以下代码正常工作。
A = Matrix{Tuple{Float64, Array{Int64, 1}}}(undef, 100, 100)
稍后,我想检查一个特定的单元格是否未定义,如果是,则在计算后分配一个值。我试过isdefined(A, i, j)
了,但是因为太多的论点而导致错误。#undef
仅在未定义时如何检查和分配?
上的文档isdefined
只为一维数组提供了一种方法,如何在矩阵上实现相同的方法?
您可以使用该isassigned
功能(isdefined
顺便说一句,帮助字符串中提到了该功能)。就像isdefined
它似乎只接受线性索引,但你可以从LinearIndices
.
julia> A = Matrix{Tuple{Float64, Array{Int64, 1}}}(undef, 100, 100);
julia> A[5, 4] = (2.1, [5])
(2.1, [5])
julia> isassigned(A, LinearIndices(A)[1, 1])
false
julia> isassigned(A, LinearIndices(A)[5, 4])
true
编辑:正如@PrzemyslawSzufel 的回答所示,您不需要线性索引。但是,直到并包括 v1.5.1 似乎没有记录
使用isassigned
:
julia> A[2,3]=(3.0, [])
(3.0, Any[])
julia> isassigned(A,2,3)
true
julia> isassigned(A,3,3)
false