Dear Sarah and R users, Thanks Sarah for the suggestion. The example you gave me works and I managed to get it to run by modifying the 'lm' to the gam command.
y.list <- list(y1=runif(10), y2 <- runif(10), y3 <- runif(10)) x1 <- 1:10 x2 <- c(11, 15, 17, 2, 18, 6, 7, 8, 12, 10) lapply(y.list, function(y)gam(y~s(x1,x2, k=100))) I now face problem of getting the fitted results from the gam command. My original problem for only one y looked like this. Now how do I get to incorporate vis.gam(b) and fitted (b) into my new code? b<-gam(y~s(x1,x2,k=100),data=dat) vis.gam(b) fitted(b) Many thanks once again. Mintewab ________________________________________ Från: Sarah Goslee [sarah.gos...@gmail.com] Skickat: den 12 december 2011 17:36 Till: Mintewab Bezabih Kopia: r-help@r-project.org Ämne: Re: [R] shorter way of coding That's not a reproducible example. Paul suggested a list of formulas, but I recommended creating a list of y variables. In your attempt, you didn't include the y in the name of the dependent variable; that's probably why it doesn't work. Look at this: > y.list <- list(y1=runif(10), y2 <- runif(10), y3 <- runif(10)) > x1 <- 1:10 > lapply(y.list, function(y)lm(y ~ x1)) $y1 Call: lm(formula = y ~ x1) Coefficients: (Intercept) x1 0.56392 -0.02586 [[2]] Call: lm(formula = y ~ x1) Coefficients: (Intercept) x1 0.66375 -0.03519 [[3]] Call: lm(formula = y ~ x1) Coefficients: (Intercept) x1 0.29106 0.02845 Sarah On Mon, Dec 12, 2011 at 11:21 AM, Mintewab Bezabih <mintewab.beza...@economics.gu.se> wrote: > Dear Paul and Sarah > > Thanks for the suggestion. I have provided my data here in to make the > results reproducable. I am actually trying to do interpoliation of climate > data where x1 and x2 are my latitude and longitude and sum64-sum 368 are my > rainfall observations which I need to regress against x1 and x2. In the > previous I was trying to get my story clear so I did not go into details. > > Now when I run your suggestion below, I get the following error message. Is > there anything in your instruction that I did not get right? > many thanks > mintewab > > listOfForumlas = paste(1:300, "~s(x1,x2, k=100)") > listofResults = lapply(listOfForumlas, function(f) { > b<-gam(as.formula(f),data=dat) > vis.gam(b) > fitted(b) > }) > > Error in model.frame.default(formula = 1 ~ 1 + x1+ x2, data = dat, : > variable lengths differ (found for 'x1') > ________________________________________ > Från: Paul Hiemstra [paul.hiems...@knmi.nl] > Skickat: den 12 december 2011 14:42 > Till: Mintewab Bezabih > Kopia: r-help@r-project.org > Ämne: Re: [R] shorter way of coding > > On 12/12/2011 01:16 PM, Mintewab Bezabih wrote: >> Dear R users, >> >> I am using the code below to generate a fitted value of b. I have about 300 >> different values for for y (y1, y2, ...y300) which means I will have to >> write the code below 300 times to generate the 300 different fitted values >> for y. Is there a short way of doing that ? >> >> Many thanks in advance >> Mintewab >> >> library(mgcv) >> dat <- read.table("e:/minti's laptop/C/GBG/allround_survey/rainfallGPS.csv", >> header=T, sep=",") >> b<-gam(y1~s(x1, x2, k=100),data=dat) >> vis.gam(b) >> fitted(b) >> ______________________________________________ >> R-help@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. > > Hi Mintewab, > > Something along these lines should work: > > listOfForumlas = paste(1:300, "~s(x1, x2, k=100)") > listofResults = lapply(listOfForumlas, function(f) { > b<-gam(as.formula(f),data=dat) > vis.gam(b) > fitted(b) > }) > > But as Sarah already commented, without a reproducible piece of example > code we cannot present any working solutions. > > cheers, > Paul > -- Sarah Goslee http://www.functionaldiversity.org ______________________________________________ R-help@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.