>>>>> Martin Maechler
>>>>> on Fri, 5 Oct 2018 12:16:37 +0200 writes:
>>>>> Hilmar Berger
>>>>> on Fri, 5 Oct 2018 10:17:49 +0200 writes:
>> Dear all, I just found this issue:
>> I just found this issue:
>> dd1 = c(rep(NaN,82), rep(-1, 144), rep(1, 74))
>> xx = runmed(dd1, 21)
>>> R crashes reproducibly in R 3.4.3, R3.4.4 (Ubuntu 14.04/Ubuntu
16.04)
> and also in the latest development version (we call
"R-devel").
> THank you very much, Hilmar!
> I will have a look, to ensure missing values (incl NaN) are
> handled propertly.
That "look" had several parts to it, with long breaks in between;
finally Hilmar kindly asked me privately, and I committed
changes to R-devel (and R 3.6.0 patched), with NEWS entry
* runmed(x, *) when x contains missing values now works for
algorithm="Stuetzle", also based on smoothEnds(y) working with
NA's, and no longer segfaults for the "Turlach" algorithm;
reported by Hilmar Berger.
but the changes were not at all sufficient to correctly deal
with NA / NaN's in runmed() --- and hence the above NEWS entry
was "fake news" as some may call it.
So, the last 2 weeks or so, I've spent several working days and
some extra hours trying to get this going. {several tries proved
to be insufficient, logically wrong, too optimistic, ...}
In the end, I've implemented a simplistic "imputation"-scheme
for the default case, *and* also added a new optional argument
'na.action' to runmed(),
and committed this half an hour ago :
------------------------------------------------------------------------
r76744 | maechler | 2019-06-27 15:51:04 +0200 (Thu, 27. Jun 2019)
M doc/NEWS.Rd
M src/library/stats/R/runmed.R
M src/library/stats/man/runmed.Rd
M src/library/stats/man/smoothEnds.Rd
M src/library/stats/src/Srunmed.c
M src/library/stats/src/Trunmed.c
M src/library/stats/src/init.c
M src/library/stats/src/statsR.h
M tests/Examples/stats-Ex.Rout.save
M tests/reg-tests-1d.R
runmed(<NAs>, "Turlach") did still seg.fault. Now, NEWS entry
(76682) should be true; new argument `na.action = ".."` determines
*how* NA/NaN are treated
------------------------------------------------------------------------
As this does prevent seg.faults, and if it is acceptable to the
release process, this may also make it into the upcoming R 3.6.1.
--
Martin Maechler
ETH Zurich and R Core Team