[R] for loop, error in model frame.default ... variable lengths differ
peter dalgaard
pdalgd at gmail.com
Mon May 21 11:00:23 CEST 2012
On May 21, 2012, at 10:25 , Petr PIKAL wrote:
> Hi
>
> You did not provide data but I can see some problems in your code. See
> inline.
>>
>> I'm failing to get a for loop working. I'm sure it's something simple,
> and I
>> have found some posts relating to it, but I'm just not understanding why
>> this isn't working.
>>
>> I have a data frame and would like to loop through specific column
> names,
>> using aggregate() within a for loop. There are NA's scattered
> throughout
>> the data frame and I'm thinking it has something to do with that, but I
>> haven't been able to fix it.
>>
>> vars <- colnames(df)[c(10,12,16,18,20,21,24:29,45)]
>> for(i in 1:length(vars)) {
>
> So i is actually values from 1 to length of vars variable.
>
>> aggregate(colnames(df)[i] ~ x1 + x2 + x3, df, mean,
>
> and you select variables from df[,1] to df[, length(vars)], which is
> probably not what you want.
> What is x1-x3? are they variables in df?
>
>> na.action=na.exclude)
>
> for mean the correct statement is na.rm=TRUE
>
>> }
>>
>> I get this error:
>> Error in model.frame.default(formula = colnames(df)[i] ~ x1 + x2 + :
>> variable lengths differ (found for 'x1')
>
> Maybe x1 has different length as df. What length(x1) and dim(df) tells
> you?
>
colnames(df)[i] is a character vector of length 1. This doesn't work any better than
> aggregate(colnames(airquality)[1] ~ Month, airquality, mean, na.rm=T)
Error in model.frame.default(formula = colnames(airquality[1]) ~ Month, :
variable lengths differ (found for 'Month')
What the poster probably wanted was something in the vein of
> nm <- colnames(airquality)[1]
> ff <- formula(bquote(.(as.name(nm))~Month))
> aggregate(ff, airquality, mean, na.rm=T)
Month Ozone
1 5 23.61538
2 6 29.44444
3 7 59.11538
4 8 59.96154
5 9 31.44828
> Regards
> Petr
>
>>
>> There are probably much better ways to do this, and I would be happy to
> get
>> suggestions, but mostly I would like to know why the code isn't working.
>>
>> Thanks-
>> Peter
>>
>> --
>> View this message in context: http://r.789695.n4.nabble.com/for-loop-
>> error-in-model-frame-default-variable-lengths-differ-tp4630698.html
>> Sent from the R help mailing list archive at Nabble.com.
>>
>> ______________________________________________
>> 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.
>
> ______________________________________________
> 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.
--
Peter Dalgaard, Professor
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
More information about the R-help
mailing list