Thank you Brian and Dennis, for your help.

Those solutions worked for a single calculation but I need to replicate it
a couple hundred times.

This is what worked:

This is what I needed:****

**

allocation <- function(vr1, vr2, vr3)****

{****

**  d<- ave(vr1+vr2+vr3, vn$MECH.NAME <http://mech.name/>, FUN = sum)

** new <- (vr1+vr2+vr3) / d

** }

**

vn$PROV.PM.FBCTS <- allocation(vn$PROV.PM.FBCTS, vn$FBCTS.INV.TOT,
vn$FBCTS.REC.TOT)



I have to credit this link:
http://www.mail-archive.com/r-help@r-project.org/msg24108.html for
inspiring the "d" line of code.



Thanks, again,


Jen









On Tue, Aug 7, 2012 at 4:53 PM, Jennifer Sabatier <
plessthanpointohf...@gmail.com> wrote:

> Hi All,
>
> I *think* it's ddply because the function recognizes vr1, etc, in other
> parts of the function.
>
> Here's some code:
>
> # create dataset
>
> PROV.PM.FBCTS <- c(0.00 ,0.00, 33205.19, 25994.56, 23351.37, 26959.56
> ,27632.58, 26076.24, 0.00,     0.00 , 6741.42, 18665.09 ,18129.59 ,21468.39
> ,21294.60 ,22764.82, 26076.73)
> FBCTS.INV.TOT <- c(0 ,      0,  958612,  487990,  413344,  573347,
>  870307, 552681 ,      0, 0 , 163831 , 400161 , 353000,  358322 , 489969,
>  147379, 1022769)
> FBCTS.REC.TOT <- c(0   ,    0, 1638818  ,297119 , 299436  ,414164 ,
> 515735,  529001   ,    0, 0 , 427341 , 625893  ,437854 , 407091,  425119 ,
>   8663,       0)
> MECH.NAME <- c("Mechanism A","Mechanism A","Mechanism A","Mechanism
> A","Mechanism A","Mechanism A","Mechanism A","Mechanism A", "Mechanism
> B","Mechanism B","Mechanism B","Mechanism B","Mechanism B","Mechanism
> B","Mechanism B","Mechanism B","Mechanism B",)
>
> vn <- data.frame(MECH.NAME, PROV.PM.FBCTS, FBCTS.INV.TOT, FBCTS.REC.TOT)
>
>
> # create function
>
> allocation <- function(vr1, vr2, vr3)
> {
>
> d <- ddply(vn, "MECH.NAME", summarise, SUM = vr1 + vr2 + vr3)
>
> vn <- merge(vn, d, by.x="MECH.NAME", by.y="MECH.NAME", all=T)
> new <- (vr1+vr2+vr3) / vn$SUM
> return(new)
>
> }
>
> # run function
>
> vn$PROV.PM.FBCTS <- allocation(PROV.PM.FBCTS, FBCTS.INV.TOT, FBCTS.REC.TOT)
>
> Here's the error:
>
> > vn$PROV.PM.FBCTS <- allocation(PROV.PM.FBCTS, FBCTS.INV.TOT,
> FBCTS.REC.TOT)
> Error in eval(expr, envir, enclos) : object 'vr1' not found
>
>
> # If I pull the calculations out of the function it works:
>
>
> d <- ddply(vn, "MECH.NAME", summarise, SUM = sum(PROV.PM.FBCTS,
> FBCTS.INV.TOT, FBCTS.REC.TOT))
> vn <- merge(vn, d, by.x="MECH.NAME", by.y="MECH.NAME", all=T)
> vn$PROV.PM.FBCTS <- (PROV.PM.FBCTS +  FBCTS.INV.TOT + FBCTS.REC.TOT) /
> vn$SUM
>
>
> > vn
>      MECH.NAME PROV.PM.FBCTS FBCTS.INV.TOT FBCTS.REC.TOT     SUM
> 1  Mechanism A    0.00000000             0             0 7713774
> 2  Mechanism A    0.00000000             0             0 7713774
> 3  Mechanism A    0.34103091        958612       1638818 7713774
> 4  Mechanism A    0.10515004        487990        297119 7713774
> 5  Mechanism A    0.09543077        413344        299436 7713774
> 6  Mechanism A    0.13151418        573347        414164 7713774
> 7  Mechanism A    0.18326628        870307        515735 7713774
> 8  Mechanism A    0.14360783        552681        529001 7713774
> 9  Mechanism B    0.00000000             0             0 5402533
> 10 Mechanism B    0.00000000             0             0 5402533
> 11 Mechanism B    0.11067280        163831        427341 5402533
> 12 Mechanism B    0.19337580        400161        625893 5402533
> 13 Mechanism B    0.14974155        353000        437854 5402533
> 14 Mechanism B    0.14565046        358322        407091 5402533
> 15 Mechanism B    0.17332290        489969        425119 5402533
> 16 Mechanism B    0.03309685        147379          8663 5402533
> 17 Mechanism B    0.19413964       1022769             0 5402533
>
>
> Can anyone help me figure out why I can't put this calculation in a
> function?  Is this a systemic thing I should look for in the future?
>
> I know there are other ways to do what I want, but I am not very curious
> about this.
>
> Best,
>
> Jen
>
>

        [[alternative HTML version deleted]]

______________________________________________
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