Richard,
I think the reason that this gives the warning is for the rest of us
who don't think about asking about missing values in non-data objects.
I could imagine someone choosing a poor name for a variable and doing
something like:
mean <- mean(x)
is.na(mean)
which would then tell them whether the mean of x was missing (due to
missing in x). Later in a new session they may try something similar
but use a different variable name in the 1st line (e.g. Mean) but
accidentally still ask for is.na(mean). So, is.na would find the mean
function and report that it is not missing, but the warning would let
the user know that what was checked for missingness was not what they
had intended.
I could also imagine meaning to write something like:
is.na(mean(x))
but accidentially writing
is.na(mean)
instead and I would appreciate the warning that would send me back to
review my code and find the mistake.
On Wed, Nov 18, 2015 at 8:03 PM, Richard M. Heiberger <rmh at temple.edu>
wrote:> David,
>
> Your answer begs the question.
> What is the problem with non-(list or vector) of type language.
> To my eye both expression(abcd) and call("mean") look like they
have
> non-missing values, hence I anticipated that they are not NA, and therefore
> that is.na() would return FALSE without a warning.
>
> On the html email, I turned that off years ago. It looks like gmail
> (who handles
> my university's email accounts) turned it back on. I just turned it
off again.
> I too find it very annoying to have to revisit setting changes that I
> didn't make.
> Thank you for letting me know.
>
> Rich
>
>
> On Wed, Nov 18, 2015 at 9:36 PM, David Winsemius <dwinsemius at
comcast.net> wrote:
>>
>>> On Nov 18, 2015, at 5:54 PM, Richard M. Heiberger <rmh at
temple.edu> wrote:
>>>
>>> What is the rationale for the following warning in R-3.2.2?
>>>
>>>> is.na(expression(abcd))
>>> [1] FALSE
>>> Warning message:
>>> In is.na(expression(abcd)) :
>>> is.na() applied to non-(list or vector) of type ?expression?
>>
>> Well, the R interpreter does think that this is not a list:
>>
>>> is.list(expression(abcd))
>> [1] FALSE
>>
>>
>>> methods(is.na)
>> [1] is.na,abIndex-method is.na,denseMatrix-method
>> [3] is.na,indMatrix-method is.na,nsparseMatrix-method
>> [5] is.na,nsparseVector-method is.na,sparseMatrix-method
>> [7] is.na,sparseVector-method is.na.coxph.penalty*
>> [9] is.na.data.frame is.na.numeric_version
>> [11] is.na.POSIXlt is.na.raster*
>> [13] is.na.ratetable* is.na.Surv
>>
>>
>> So the rationale is probably the same as the rationale for this
warning:
>>
>>> is.na(call("mean", 1:4))
>> [1] FALSE FALSE
>> Warning message:
>> In is.na(call("mean", 1:4)) :
>> is.na() applied to non-(list or vector) of type ?language'
>>
>>> [[alternative HTML version deleted]]
>>
>>
>> I?m somewhat puzzled at your use of HTML for an Rhelp posting. I
thought you were a longtime R user?
>>
>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more,
see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>> David Winsemius
>> Alameda, CA, USA
>>
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
--
Gregory (Greg) L. Snow Ph.D.
538280 at gmail.com