我不知道如何NA在Julia DataFrames中处理.
例如,使用以下DataFrame:
> import DataFrames
> a = DataFrames.@data([1, 2, 3, 4, 5]);
> b = DataFrames.@data([3, 4, 5, 6, NA]);
> ndf = DataFrames.DataFrame(a=a, b=b)
Run Code Online (Sandbox Code Playgroud)
我可以在列上成功执行以下操作 :a
> ndf[ndf[:a] .== 4, :]
Run Code Online (Sandbox Code Playgroud)
但如果我尝试相同的操作,:b我会收到错误NAException("cannot index an array with a DataArray containing NA values").
> ndf[ndf[:b] .== 4, :]
NAException("cannot index an array with a DataArray containing NA values")
while loading In[108], in expression starting on line 1
in to_index at /Users/abisen/.julia/v0.3/DataArrays/src/indexing.jl:85
in getindex …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写两个具有相同名称的函数,这些函数可以使用Julia的多个调度工具并涉及数组的数组和数组.
假设有这三个输入变量
# typeof(a) => Array{Array{T,N},1}
a=Array[[1,2,3],[4,5,6]]
# typeof(b) => Array{Int64,1}
b=[1,2,3]
# typeof(c) => Array{Array{Float64,1},1}
c=[rand(10) for i in 1:2]
Run Code Online (Sandbox Code Playgroud)
我写这两个函数
function test(x::Array{Array})
println("received an array of array => $(typeof(x))")
end
function test{T<:Number}(x::Array{T,1})
println("received a vector. converting.....")
nx = Array[x]
test(nx)
end
Run Code Online (Sandbox Code Playgroud)
以上方法适用于a和b,但不会c.
test(a)
# received an array of array => Array{Array{T,N},1}
test(b)
# received a vector. converting.....
# received an array of array => Array{Array{T,N},1}
test(c)
# LoadError: MethodError: `test` has no …Run Code Online (Sandbox Code Playgroud)