>>>>> Martin Maechler >>>>> on Mon, 18 Nov 2019 12:15:38 +0100 writes:
>>>>> suharto anggono--- via R-devel >>>>> on Sun, 17 Nov 2019 10:34:31 +0000 writes: >> SVN revision 77401 changes >> x[isM] <- lapply(x[isM], function(o) `class<-`(o, class(o)[class(o) != "AsIs"])) >> to >> x[isM] <- lapply(x[isM], function(o) `class<-`(o, class(o)[!inherits(o,"AsIs")])) >> in function 'get_all_vars' in src/library/stats/R/models.R in R devel. >> The change is inappropriate. >> class(o)[class(o) != "AsIs"] removes "AsIs" from class(o), giving class(o) without "AsIs". >> On the other hand, inherits(o,"AsIs") is just a single logical value. If "AsIs" is in class(o), inherits(o,"AsIs") is TRUE. In that case, by recycling of logical index, class(o)[!inherits(o,"AsIs")] removes all elements of class(o), giving character(0). > Thank you, Suharto ! > You are obviously right, and I'm a bit embarrassed by my > overzealousness to follow my own recommendations in the R Blog > http://bit.ly/R_blog_class_think_2x > {*wrongly*: The recommendation was to "think again" ...} > It's a "shame" that the wrong code did not trigger any checks, > so if anybody has time... I'd be grateful for such a regression > check. Once I started thinking, it was easy to modify the previous reg.check to trigger in the case of the erronous r77401. Fixed now in 77435. Martin ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel