A few comments in-line below
On 8/7/2012 1:53 PM, Jennifer Sabatier wrote:
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",)
Line breaks have messed up this data and there is an extra comma at the
end of MECH.NAME
vn <- data.frame(MECH.NAME, PROV.PM.FBCTS, FBCTS.INV.TOT, FBCTS.REC.TOT)
It is easier to just give the final object. See the output of dump("vn",
file="")
# create function
allocation <- function(vr1, vr2, vr3)
{
d <- ddply(vn, "MECH.NAME", summarise, SUM = vr1 + vr2 + vr3)
ddply is looking for a column named vr1 (etc.), not a column whose name
is that of the character value of the variable vr1. There is not a
straightforward way to do this with summarise, but you can use something
like
function(DF) {
data.frame(SUM = DF[[vr1]] + DF[[vr2]] + DF[[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))
Note that sum(a,b) is not the same as a+b.
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
--
Brian S. Diggs, PhD
Senior Research Associate, Department of Surgery
Oregon Health & Science University
______________________________________________
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.