Updated dependencies; Accept missing values on input arrays (if eltype <: AbstractFloat)
This commit is contained in:
parent
5c46e35fea
commit
e8a6b21df6
@ -14,11 +14,11 @@ StructC14N = "d2514e9c-36c4-5b8e-97e2-51e7675c221c"
|
||||
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
||||
|
||||
[compat]
|
||||
ColorSchemes = "^3.5"
|
||||
ColorTypes = "^0.10"
|
||||
ColorSchemes = "^3.12"
|
||||
ColorTypes = "^0.11"
|
||||
Colors = "^0.12"
|
||||
DataStructures = "^0.18"
|
||||
ReplMaker = "^0.2"
|
||||
StatsBase = "^0.33"
|
||||
StructC14N = "^0.3"
|
||||
julia = "^1.2"
|
||||
julia = "^1.5"
|
||||
|
||||
@ -1112,11 +1112,8 @@ function parseArguments(_args...)
|
||||
end
|
||||
insert!(args, pos, string(strip(arg[1])) => nothing)
|
||||
elseif isa(arg, AbstractArray) && # ==> a dataset column
|
||||
((valtype(arg) <: Real) ||
|
||||
(valtype(arg) <: AbstractString)) ;
|
||||
elseif isa(arg, AbstractArray) && # ==> a dataset column (to be `convert`ed)
|
||||
((typeof(arg[1]) <: Real) ||
|
||||
(typeof(arg[1]) <: AbstractString))
|
||||
((nonmissingtype(eltype(arg)) <: Real) ||
|
||||
(nonmissingtype(eltype(arg)) <: AbstractString)) ;
|
||||
elseif isa(arg, Real) # ==> a dataset column with only one row
|
||||
args[pos] = [arg]
|
||||
elseif isa(arg, Dataset) ; # ==> a Dataset object
|
||||
@ -1138,54 +1135,54 @@ function parseArguments(_args...)
|
||||
pos += 1
|
||||
end
|
||||
|
||||
# Third pass: convert data into Dataset objetcs
|
||||
# Third pass: convert data into Dataset objects
|
||||
pos = 1
|
||||
accum = Vector{AbstractArray}()
|
||||
while pos <= length(args)
|
||||
arg = args[pos]
|
||||
taken = false
|
||||
|
||||
if isa(arg, AbstractArray) &&
|
||||
!(valtype(arg) <: Real) &&
|
||||
!(valtype(arg) <: AbstractString)
|
||||
if isa(arg, AbstractArray)
|
||||
if nonmissingtype(eltype(arg)) != eltype(arg)
|
||||
@assert nonmissingtype(eltype(arg)) <: AbstractFloat "Missing values are supported only on arrays of floats"
|
||||
arg[ismissing.(arg)] .= NaN
|
||||
arg = convert(Array{nonmissingtype(eltype(arg))}, arg)
|
||||
end
|
||||
tt = eltype(arg)
|
||||
|
||||
# Try with `convert`
|
||||
if typeof(arg[1]) <: Integer
|
||||
# Try to convert into Int, Float64 and String
|
||||
if (tt <: Integer) && !(tt <: Int)
|
||||
arg = convert(Array{Int}, arg)
|
||||
elseif typeof(arg[1]) <: Real
|
||||
elseif (tt <: Real) && !(tt <: Float64)
|
||||
arg = convert(Array{Float64}, arg)
|
||||
elseif typeof(arg[1]) <: AbstractString
|
||||
elseif (tt <: AbstractString) && !(tt <: String)
|
||||
arg = convert(Array{String}, arg)
|
||||
end
|
||||
end
|
||||
|
||||
if isa(arg, AbstractArray) && # ==> beginning of a dataset
|
||||
((valtype(arg) <: Real) ||
|
||||
(valtype(arg) <: AbstractString))
|
||||
|
||||
# Collect all data
|
||||
accum = Vector{AbstractArray}()
|
||||
while isa(arg, AbstractArray) &&
|
||||
((valtype(arg) <: Real) ||
|
||||
(valtype(arg) <: AbstractString))
|
||||
tt = eltype(arg)
|
||||
if (tt <: Real) ||
|
||||
(tt <: AbstractString)
|
||||
push!(accum, arg)
|
||||
deleteat!(args, pos)
|
||||
if pos <= length(args)
|
||||
arg = args[pos]
|
||||
taken = true
|
||||
end
|
||||
end
|
||||
|
||||
if !taken || (pos > length(args))
|
||||
if length(accum) > 0
|
||||
mm = extrema(length.(accum))
|
||||
if mm[1] == 0 # empty Dataset
|
||||
@assert mm[1] == mm[2] "At least one input array is empty, while other(s) are not"
|
||||
d = DatasetEmpty()
|
||||
else
|
||||
break
|
||||
d = Dataset(accum)
|
||||
end
|
||||
insert!(args, pos, d)
|
||||
empty!(accum)
|
||||
end
|
||||
|
||||
mm = extrema(length.(accum))
|
||||
if mm[1] == 0
|
||||
# empty Dataset
|
||||
@assert mm[1] == mm[2] "At least one input array is empty, while other(s) are not"
|
||||
d = DatasetEmpty()
|
||||
else
|
||||
d = Dataset(accum)
|
||||
end
|
||||
insert!(args, pos, d)
|
||||
pos += 1
|
||||
end
|
||||
pos += 1
|
||||
end
|
||||
|
||||
# Fourth pass: collect PlotElement objects
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user