Martin Maechler
2019-Nov-18 13:12 UTC
[Rd] Inappropriate class(o)[!inherits(o,"AsIs")] in get_all_vars
>>>>> 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
suh@rto_@@ggo@o m@iii@g oii y@hoo@com
2019-Nov-29 18:05 UTC
[Rd] Inappropriate class(o)[!inherits(o,"AsIs")] in get_all_vars
class(o)[!inherits(o,"AsIs")] is still in function 'get_all_vars' in R patched (in https://svn.r-project.org/R/branches/R-3-6-branch/src/library/stats/R/models.R). It was ported to R patched by r77402. On Monday, 18 November 2019, 8:12:10 PM GMT+7, Martin Maechler <maechler at stat.math.ethz.ch> wrote: >>>>> 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 [[alternative HTML version deleted]]
Martin Maechler
2019-Dec-02 14:10 UTC
[Rd] Inappropriate class(o)[!inherits(o,"AsIs")] in get_all_vars
>>>>> suharto anggono--- via R-devel >>>>> on Fri, 29 Nov 2019 18:05:34 +0000 writes:> class(o)[!inherits(o,"AsIs")] is still in function > 'get_all_vars' in R patched (in > https://svn.r-project.org/R/branches/R-3-6-branch/src/library/stats/R/models.R). It > was ported to R patched by r77402. You are right.... it's no longer now, thank you very much, Suharto! Martin > On Monday, 18 November 2019, 8:12:10 PM GMT+7, Martin Maechler > <maechler at stat.math.ethz.ch> wrote: >>>>>> 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 > [[alternative HTML version deleted]] > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
Apparently Analagous Threads
- Inappropriate class(o)[!inherits(o,"AsIs")] in get_all_vars
- Inappropriate class(o)[!inherits(o,"AsIs")] in get_all_vars
- get_all_vars() does not handle rhs matrices in formulae
- Documentation of model.frame() and get_all_vars()
- get_all_vars fails with matrices (PR#13624)