Мы можем получить все data.frame
в list
с mget
lst1 <- mget(ls(pattern = '^MeanPlots\\d+$'))
, затем l oop над list
с lapply
и применить модель
DmodelLst <- lapply(lst1, function(dat) nls(y ~ ((a* PAR)/(b + PAR )) - c,
data = dat, start = list(a=a,b=b,c=c)))
Заменить 'x' на имя столбца 'PAR'.
В операторе l oop создайте NULL list
для хранения вывода ('Outlst'), get
значение объекта из paste0
, затем примените формулу с именем столбца без кавычек, т.е. 'PAR'
Outlst <- vector("list", 3)
ndat <- data.frame(x = seq(0,2000,100))
for(i in 1:3) {
dat <- get(paste0("MeanPlots", i))
modeltmp <- nls(y ~ ((a*PAR)/(b + PAR )) - c,
data = dat, start = list(a=a,b=b,c=c))
MD <- data.frame(predict(modeltmp, newdata = ndat))
MD[,2] <- ndat$x
names(MD) <- c("Photo","PARi")
Outlst[[i]] <- MD
}
Теперь мы извлекаем выходные данные каждого list
элемента
Outlst[[1]]
Outlst[[2]]
вместо создания нескольких объектов в глобальной среде