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.

Reply via email to