Name assignment in for loop
... or let R do all the setup: lmModels <- lapply(seq_len(nrow(dat2)) , FUN = etc. ## the last result is returned as the list component I never declare lists and use for() loops to fill them any more. -- Bert On Thu, Nov 1, 2012 at 2:51 PM, Peter Alspach
<Peter.Alspach at plantandfood.co.nz> wrote:
Tena koe Toby
Try creating a list and storing each model as an element of the list. For example,
lmModels <- vector('list', nrow(dat2))
for (i in 1:nrow(dat2))
{
lmModels[[i]] <- etc
}
Generally, I add a line after creating the list to name the elements and then address the list using these names as I find that less error prone and more informative.
HTH ....
Peter Alspach
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of nrm2010
Sent: Friday, 2 November 2012 10:16 a.m.
To: r-help at r-project.org
Subject: [R] Name assignment in for loop
Dear helpeRs-
I'm using a for loop to create a series of models.
I'm trying to assign a name to each model created, using the loop index. The loop gets stuck at the name of the model, giving the error "target of assignment expands to non-language object". The linear model runs without error; only the name is problematic.
Here is the current loop syntax. The use of dat and dat2 is not an error. I'm pulling data from 2 sources for the model.
for (i in 1:dim(dat2)[[1]]) {
assign("modelb",i) <- lm(log(dat$flux) ~ dat$Tsoil_flux, subset = dat$chamber == dat2$chamber[i] & dat$year == dat2$year[i] & dat$doy >= dat2$day1[i] & dat$doy <= dat2$day2[i]) dat2$coef[i] <- coef(assign("modelb",i, sep = ""))[[2]] dat2$Rsq[i] <- summary(assign("modelb",i, sep = ""))[[9]] }
I have also tried
assign("modelb",1:i) #following the ?assign example paste("modelb", i, sep = "") <- (...) assign(paste("modelb", i, sep = "")) <- (...) assign(paste("modelb", i, sep - ""), put linear model here) They all generate the same error message.
dim(dat2)[[1]] is 29
dim(dat2)[[1]]
[1] 29
class(dim(dat2)[[1]])
[1] "integer" I have not included data because the problem is with the naming syntax; no data are involved except for the number 29. Given this approach, rather than the sapply() approach, what is the correct syntax for naming each model in the sequence? Thank you in advance. Toby Gass
______________________________________________ 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. The contents of this e-mail are confidential and may be ...{{dropped:14}} ______________________________________________ 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.
Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm