Skip to content
Back to formatted view

Raw Message

Message-ID: <4B46E584.8080909@bitwrit.com.au>
Date: 2010-01-08T07:57:56Z
From: Jim Lemon
Subject: table() and setting useNA to be there by default?
In-Reply-To: <8ed68eed1001070402v61fa94d4rea3cd3fab29cc837@mail.gmail.com>

On 01/07/2010 11:02 PM, Sean O'Riordain wrote:
> Good morning,
>
> Is there a way to get table() to default to including NAs  - as in...
> table(..., useNA='ifany') or  table(..., useNA='always') or table(...,
> exclude=NULL)  ?
>
> I can't see a way under table() or options() or searching the archives
> (probably using the wrong keyword?).
>
>    
>> t1<- c(1,2,3,3,3,2,NA,NA,NA,NA)
>> table(t1)
>>      
> t1
> 1 2 3
> 1 2 3
>
> I keep forgetting to allow for NAs and I was bitten *again* this
> morning... ideally I'd like to be able to set a default in my profile
> so that table(t1) will actually do table(t1, exclude=NULL) or
> table(t1, useNA='ifany')
>
> I could say something like..
>
>    
>> tab1<- function(t, ...) { table(t, ..., useNA='ifany') }
>> tab1(t1)
>>      
> t
>     1    2    3<NA>
>     1    2    3    4
>
> but this names it as 't' instead of 't1' which is ugly?
>
> Any other suggestions please?
>    
Hi Sean,
I have managed to get rid of the ugly "t" with this:

tableNA<-function(x) {
  varname<-deparse(substitute(x))
  assign(varname,x)
  tabNA<-table(get(varname),useNA="always")
  names(attr(tabNA,"dimnames"))<-varname
  return(tabNA)
}

Seems a long way round the paddock.

Jim