相关疑难解决方法(0)

使用包含的NA值索引Julia的DataArrays

我想知道为什么不能使用NA值索引Julia的DataArrays.执行下面的剪切会导致错误(NAException("无法使用包含NA值的DataArray索引数组")):

dm = data([1 4 7; 2 5 8; 3 1 9])
dm[dm .== 5] = NA

dm[dm .< 3] = 1  #Error
dm[(!isna(dm)) & (dm .< 3)] = 1  #Working
Run Code Online (Sandbox Code Playgroud)

有一个解决方案可以忽略数据框架中的NA isna(),就像这里回答的那样.乍一看它的工作方式应该如此,忽略DataFrames中的NA是与DataArrays相同的方法,因为DataFr的每一列都是DataArray,在此处说明.但在我看来,忽略!isna()每个条件下的缺失值并不是最好的解决方案.

对我来说,如果包含NA,DataTrame模块会抛出错误的原因尚不清楚.如果索引所需的布尔数组具有NA的值,则此值应转换为false类似MATLAB®或Pythons Pandas 的值.在indexing.jl中的DataArray模块源代码(如下所示)中,有一个显式函数抛出NAException:

# Indexing with NA throws an error
function Base.to_index(A::DataArray)
    any(A.na) && throw(NAException("cannot index an array with a DataArray containing NA values"))
    Base.to_index(A.data)
end
Run Code Online (Sandbox Code Playgroud)

如果您通过将NA设置为false来更改代码段...

# Indexing with NA throws an error
function Base.to_index(A::DataArray) …
Run Code Online (Sandbox Code Playgroud)

arrays indexing na julia

0
推荐指数
1
解决办法
232
查看次数

标签 统计

arrays ×1

indexing ×1

julia ×1

na ×1