Как пропустить как среднее значение всех отсутствующих векторов в julia-0.7?

Я использую julia-0.7. Следующий код

using Statistics
x=[missing, 0]
mean(skipmissing(x))

дает 0, где missing - встроенное пропущенное значение julia-0.7. Если я еще попробую

x[2]=missing
mean(skipmissing(x))

Я получаю сообщение об ошибке. Как лучше всего получить missing вместо ошибки во втором случае?

Я боюсь использовать _5 _ / _ 6_, потому что этот фрагмент многократно повторяется в программе.


person sholi    schedule 20.08.2018    source источник
comment
Я дал ответ, который я считаю лучшим на данный момент, но в целом он кажется неработающим. Я открыл проблему github.com/JuliaLang/julia/issues/28777.   -  person Bogumił Kamiński    schedule 20.08.2018


Ответы (1)


Самый быстрый код, который я мог бы порекомендовать, - использовать if/else, но я думаю, вы не сможете этого избежать:

sx = skipmissing(x)
iterate(sx) === nothing ? missing : mean(sx)

поскольку iterate должен быть быстрее, чем, например, length.

Однако в целом вы указываете на проблему, которая возникла у меня в последнее время, так как существует несогласованность в дизайне mean, потому что если вы collect, вы получите:

julia> mean(collect(skipmissing(x)))
NaN

в случае, если вы представили (так что не ошибка и не missing).

person Bogumił Kamiński    schedule 20.08.2018