[R-pkg-devel] Absent variables and tibble

Lenth, Russell V russell-lenth at uiowa.edu
Mon Jun 27 15:22:47 CEST 2016

My package 'lsmeans' is now suddenly broken because of a new provision in the 'tibble' package (loaded by 'dplyr' 0.5.0), whereby the "[[" and "$" methods for 'tbl_df' objects - as documented - throw an error if a variable is not found. 

The problem is that my code uses tests like this:

	if (is.null (x$var)) {...}

to see whether 'x' has a variable 'var'. Obviously, I can work around this using

	if (!("var" %in% names(x))) {...}

but (a) I like the first version better, in terms of the code being understandable; and (b) isn't there a long history whereby we can expect a NULL result when accessing an absent member of a list (and hence a data.frame)? (c) the code base for 'lsmeans' has about 50 instances of such tests.

Anyway, I wonder if a lot of other package developers test for absent variables in that first way; if so, they too are in for a rude awakening if their users provide a tbl_df instead of a data.frame. And what is considered the best practice for testing absence of a list member? Apparently, not either of the above; and because of (c), I want to do these many tedious corrections only once.

Thanks for any light you can shed.


Russell V. Lenth  -  Professor Emeritus
Department of Statistics and Actuarial Science   
The University of Iowa  -  Iowa City, IA 52242  USA   
Voice (319)335-0712 (Dept. office)  -  FAX (319)335-3017

Just because you have numbers, that doesn't necessarily mean you have data.

More information about the R-package-devel mailing list