Peter Keller
2012-May-21 02:10 UTC
[R] for loop, error in model frame.default ... variable lengths differ
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)) { aggregate(colnames(df)[i] ~ x1 + x2 + x3, df, mean, na.action=na.exclude) } I get this error: Error in model.frame.default(formula = colnames(df)[i] ~ x1 + x2 + : variable lengths differ (found for 'x1') 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.
Jeff Newmiller
2012-May-21 07:56 UTC
[R] for loop, error in model frame.default ... variable lengths differ
No data, not reproducible. I think you should be using na.omit, though. --------------------------------------------------------------------------- Jeff Newmiller The ..... ..... Go Live... DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go... Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...1k --------------------------------------------------------------------------- Sent from my phone. Please excuse my brevity. Peter Keller <kellerp.l at gmail.com> wrote:>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)) { > aggregate(colnames(df)[i] ~ x1 + x2 + x3, df, mean, >na.action=na.exclude) > } > >I get this error: >Error in model.frame.default(formula = colnames(df)[i] ~ x1 + x2 + : > variable lengths differ (found for 'x1') > >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.
Petr PIKAL
2012-May-21 08:25 UTC
[R] for loop, error in model frame.default ... variable lengths differ
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 columnnames,> using aggregate() within a for loop. There are NA's scatteredthroughout> 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 toget> 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 guidehttp://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.