Your basic problem is that you are trying to change the value of a global object (TotalCover.df) from within a function. A better approach is to pass in the object that you are changing and then return it as the value of the function. You can then assign it back to the original object if you want. I think something like this should work, but the code you have is not executable since some objects are not defined (e.g., data.df):
#Define Variables Quadrats.df<-unique(data.df$Quadrat) TotalCover.df<-cbind(0:750/10,0,0,0,0,0,0) colnames(TotalCover.df)<- c("Station","Shrub","Tree","Invasive","Herb","Litter","Bare") Shrub.df<-data.df[data.df$Layer=="Shrub",] Tree.df<-data.df[data.df$Layer=="Tree",] Cover.fn<-function(ID, TC.df){ ShrubCover.df<-Shrub.df[Shrub.df$Quadrat==ID,] for (j in 1:length(ShrubCover.df[,"Quadrat"])){ for (i in 1:751){ if (TC.df[i,"Station"]>=ShrubCover.df[j,"Start"] && TC.df[i,"Station"]<= ShrubCover.df[j,"Stop"]) TC.df[i,"Shrub"]<- 1 } } TreeCover.df<-Tree.df[Tree.df$Quadrat==ID,] for (j in 1:length(TreeCover.df[,"Quadrat"])){ for (i in 1:751){ if (TC.df[i,"Station"]>=TreeCover.df[j,"Start"] && TC.df[i,"Station"]<= TreeCover.df[j,"Stop"]) TC.df[i,"Tree"]<- 1 } } TC.df # return value } Cover.fn("VFFF1-7", TotalCover.df) On Mon, Jul 13, 2009 at 2:06 PM, chipmaney<chipma...@hotmail.com> wrote: > > I have a function (see below). This function has one object, ID. If I run > the loops by themselves using a character value (ie,"VFFF1-7") instead of > the function object, then the loops work fine. However, when I try to > insert the character value via the function call, it doesn't work. I don't > get an error, but the TotalCover.df dataframe does not update according to > the loop criteria. Any obvious problems that you can see? > > ################Cover Function######################### > > #Define Variables > Quadrats.df<-unique(data.df$Quadrat) > TotalCover.df<-cbind(0:750/10,0,0,0,0,0,0) > colnames(TotalCover.df)<- > c("Station","Shrub","Tree","Invasive","Herb","Litter","Bare") > Shrub.df<-data.df[data.df$Layer=="Shrub",] > Tree.df<-data.df[data.df$Layer=="Tree",] > > Cover.fn<-function(ID){ > > ShrubCover.df<-Shrub.df[Shrub.df$Quadrat==ID,] > for (j in 1:length(ShrubCover.df[,"Quadrat"])){ > for (i in 1:751){ > if (TotalCover.df[i,"Station"]>=ShrubCover.df[j,"Start"] > && TotalCover.df[i,"Station"]<= ShrubCover.df[j,"Stop"]) > TotalCover.df[i,"Shrub"]<- 1 > } > } > TreeCover.df<-Tree.df[Tree.df$Quadrat==ID,] > for (j in 1:length(TreeCover.df[,"Quadrat"])){ > for (i in 1:751){ > if (TotalCover.df[i,"Station"]>=TreeCover.df[j,"Start"] > && TotalCover.df[i,"Station"]<= TreeCover.df[j,"Stop"]) > TotalCover.df[i,"Tree"]<- 1 > } > } > } > > > Cover.fn("VFFF1-7") > -- > View this message in context: > http://www.nabble.com/Help-get-this-simple-function-to-work...-tp24466533p24466533.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? ______________________________________________ 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.