[R] for loop, error in model frame.default ... variable lengths differ

Petr PIKAL petr.pikal at precheza.cz
Mon May 21 10:25:05 CEST 2012


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?

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.



More information about the R-help mailing list