Re: [R] RE: more on lm(y~x) question: removing NA´s

Christoph Scherber Christoph.Scherber at uni-jena.de
Tue May 4 16:20:06 CEST 2004


it all works fine (the regression lines fit correctly to the data) as 
long as there are not both missing values in j and k.

What suggestions would you have for this? Or, more precisely, how would 
you create multiple graphs from subsequent columns of a data.frame?



Thomas Lumley wrote:

>On Tue, 4 May 2004, Liaw, Andy wrote:
>
>  
>
>>1. If your code actually runs, you should upgrade R, and quit using `_' for
>>assignment... 8-)
>>
>>2. You seem to have an extraneous `]' after the na.exclude.  Could that be
>>the problem?
>>    
>>
>
>More seriously, the for() loop over k will mess up the value of k that you
>want to use for lm.
>
>	-thomas
>
>
>  
>
>>Andy
>>
>>
>>    
>>
>>>From: Christoph Scherber
>>>
>>>actually, the situation is much more complicated. I am producing
>>>multiple graphs within a "for" loop. For some strange reason, the
>>>plotting routine always stops once lm(y~x) encounters more than one
>>>missing value (I have marked the important bit with "***********"):
>>>
>>>par(mfrow=c(5,5))
>>>p_seq(3,122,2)
>>>i_0
>>>k_0
>>>number_0
>>>for (i in p) {
>>>   j_foranalysis[93:174,i+1]
>>>   k_foranalysis[93:174,i]
>>>   df_data.frame(j,k)
>>>   mainlab1_substring(names(foranalysis[i]),2,8)
>>>   mainlab2_"; corr.:"
>>>   mainlab3_round(cor(j,k,na.method="available"),4)
>>>   mainlab4_"; excl.Mono:"
>>>   mainlab5_round(cor(j[j<0.9],k[j<0.9],na.method="available"),4)
>>>   mainlab_paste(mainlab1,mainlab2,mainlab3,mainlab4,mainlab5)
>>>   plot(k,j,main=mainlab,xlab="% of total biomass",ylab="% of total
>>>cover",pch="n")
>>>   for (k in 1:length(foranalysis[93:174,i]))
>>>number[k]_substring(plotcode[foranalysis[k,1]],1,5)
>>>   text(foranalysis[93:174,i],foranalysis[93:174,i+1],number)
>>>**********************************
>>>   model_lm(j~k,na.action=na.exclude])
>>>**********************************
>>>   abline(model)
>>>   abline(0,1,lty=2)
>>>    }
>>>
>>>Does anyone have any suggestions on this?
>>>
>>>Best regards
>>>Chris.,
>>>
>>>
>>>
>>>
>>>Liaw, Andy wrote:
>>>
>>>      
>>>
>>>>By (`factory') default that's done for you automagically, because
>>>>options("na.action") is `na.omit'.
>>>>
>>>>If you really want to do it `by hand', and have the data in
>>>>        
>>>>
>>>a data frame,
>>>      
>>>
>>>>you can use something like:
>>>>
>>>>lm(y ~ x, df[complete.cases(df),])
>>>>
>>>>HTH,
>>>>Andy
>>>>
>>>>
>>>>
>>>>        
>>>>
>>>>>From: Christoph Scherber
>>>>>
>>>>>Dear all,
>>>>>
>>>>>I have a data frame with different numbers of NA´s in each
>>>>>column, e.g.:
>>>>>
>>>>>x       y
>>>>>1      2
>>>>>NA  3
>>>>>NA  4
>>>>>4     NA
>>>>>1     5
>>>>>NA NA
>>>>>
>>>>>
>>>>>I now want to do a linear regression on y~x with all the NA´s
>>>>>removed.
>>>>>The problem now is that is.na(x) (and is.na(y) obviously
>>>>>gives vectors
>>>>>with different lengths. How could I solve this problem?
>>>>>
>>>>>Thank you very much for any help.
>>>>>
>>>>>Best regards
>>>>>Chris
>>>>>
>>>>>          
>>>>>
>>______________________________________________
>>R-help at stat.math.ethz.ch mailing list
>>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>>PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>>
>>    
>>
>
>Thomas Lumley			Assoc. Professor, Biostatistics
>tlumley at u.washington.edu	University of Washington, Seattle
>
>  
>




More information about the R-help mailing list