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 A0. 0 0 7713774
2 Mechanism A0. 0 0 7713774
3 Mechanism A0.34103091958612 1638818 7713774
4 Mechanism A0.10515004487990297119 7713774
5 Mechanism A0.09543077413344299436 7713774
6 Mechanism A0.13151418573347414164 7713774
7 Mechanism A0.18326628870307515735 7713774
8 Mechanism A0.14360783552681529001 7713774
9 Mechanism B0. 0 0 5402533
10 Mechanism B0. 0 0 5402533
11 Mechanism B0.11067280163831427341 5402533
12 Mechanism B0.19337580400161625893 5402533
13 Mechanism B0.14974155353000437854 5402533
14 Mechanism B0.14565046358322407091 5402533
15 Mechanism B0.17332290489969425119 5402533
16 Mechanism B0.03309685147379 8663 5402533
17 Mechanism B0.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.