[R] newbie - difficulty calling user defined function from by()
Rixon, John C.
JCRixon at wellington.com
Wed Feb 4 16:53:27 CET 2009
Hi Folks:
I'm new to R and am having trouble calling a user-defined function
within the by() function. I have checked on-line help and the R
documentation to no avail. I have a data frame with a sample subset
represented here:
> example.sample
ACCT_GROUP_DIM_KEY MV_BASE TOT_DEBT TOT_EQTY
1 555586574850 1082576.3 685.00 2422.50
2 555586574850 1032994.2 2444.00 1724.00
3 555586574850 620471.0 3494.84 2712.59
4 555586574850 225047.4 592.21 514.17
5 555586574850 353844.5 48.25 396.28
6 555586574850 164043.6 0.00 204.14
7 555586574850 115792.4 436.25 669.60
8 555586574850 1299872.0 1794.21 1509.21
9 555586574851 100000.0 1.00 500.00
10 555586574851 100001.0 1.01 501.00
>
I am using the by() function to apply an aggregation on rows grouped by
the key value. A simple mean aggregation works as seen here:
> by (example.sample[, 2:4], example.sample["ACCT_GROUP_DIM_KEY"], mean)
ACCT_GROUP_DIM_KEY: 555586574850
MV_BASE TOT_DEBT TOT_EQTY
611830.169 1186.845 1269.061
------------------------------------------------------------------------
-------------------------
ACCT_GROUP_DIM_KEY: 555586574851
MV_BASE TOT_DEBT TOT_EQTY
100000.500 1.005 500.500
>
I have defined a function that calculates a metric I want to apply
against each group. The function is:
> debt.eq
function (x) {sum(
(x["TOT_DEBT"]/x["TOT_EQTY"])*(x["MV_BASE"]/sum(x["MV_BASE"]))*100)}
>
When I call the function without any grouping I get:
> debt.eq (example.sample)
[1] 88.1984
>
When I try to call my user-defined function in the by() function I get
the following error:
> by (example.sample[, 2:4], example.sample["ACCT_GROUP_DIM_KEY"],
debt.eq(example.sample))
Error in FUN(X[[1L]], ...) : could not find function "FUN"
>
What is it I am doing wrong/missing here? Thanks in advance,
John
More information about the R-help
mailing list