[R] offlist Re: Svy function doesn't work nested in user-defined function

David Winsemius dwinsemius at comcast.net
Thu May 20 22:44:58 CEST 2010


On May 20, 2010, at 4:32 PM, David Winsemius wrote:

>
> On May 20, 2010, at 11:24 AM, Sabatier, Jennifer F. (CDC/OID/ 
> NCHHSTP) wrote:
>
>>
>> Hi R-help,
>>
>> I posted about this late yesterday but got no response. I may have  
>> put
>> TMI in the original request.  Not to mention I couldn't cut and paste
>> yesterday because I was working R off a non-network computer while
>> asking for help on a network computer.
>>
>>
>> Essentially, I have this user-defined function:
>>
>> test <- function(X){
>>
>> 			
>>           	chisq <- svychisq(~X + SEX, design=audit,
>
> Did you really have a variable name "X" inside the object that you  
> are giving a temporary name of "X" to. Seems confusing if that were  
> your choice.
>
>> statisic="adjWald", round=4)
>> 			
>> }
>>
>> test(con)
>>
>
> I do not know the answer, but I'm not sure that anyone including  
> Lumley could answer it with the proffered information:
>
> Perhaps you should include the code used to create "audit" as well  
> as the results of str() on the data argument to design when audit  
> was created. I am guessing that "SEX" is not available inside the  
> function and that you should have written:
>
> test <- function(Z){ 			
>           	chisq <- svychisq(~X + SEX, design=Z,
>                                    statistic="adjWald", round=4)
> 			
> }

Oh, heck. Forgot to trim the address list. Looking at this again, I  
think I see the OP's intent better. I still do not have the answer,  
but believe the OP needs to construct a valid formula object if she  
intends to pass only a column name to her function. Perhaps something  
along the lines of:

test <- function(Z){ 			
           fmla <- as.formula( paste(" ~ ", paste(X, "SEX", collapse=  
"+"))))
           chisq <- svychisq( fmla, design=audit,
                                    statistic="adjWald", round=4)
			
}

test(con)


>
>
> -- 
> David.
>
>
>>
>>
>> "con" is a data variable in my design object audit.
>>
>> When I just run:
>>
>> chisq <- svychisq(~X + SEX, design=audit, statisic="adjWald",  
>> round=4)
>>
>> It works just fine.
>>
>> It's only when it's nested in the function test() that it falls  
>> apart.
>>
>> I get this error:
>>
>> Error in `[.data.frame`(design$variables, , as.character(rows)) :
>> undefined columns selected
>>
>>
>> How can I solve this problem?
>>
>> Thanks,
>>
>> Jen (obviously a new R-user, as of late 2009)
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> 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, MD
> West Hartford, CT
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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, MD
West Hartford, CT



More information about the R-help mailing list