Skip to content

How do I make proper use of the by() function?

3 messages · Fredrik Karlsson, Anupam Tyagi, PIKAL Petr

#
You may want to read about several "apply" functions. They may help you do
what you are trying.

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of Fredrik Karlsson
Sent: Saturday, June 11, 2011 3:13 AM
To: R-Help List
Subject: [R] How do I make proper use of the by() function?

Dear list,

I have a function that uses values from two vectors  and spits out one new
vector  based on all the values of the two original vectors, and with the
same length as them.
Ok, I would now like to be able to apply that function simply on two columns
in a data frame, divided by the levels of factors in the data frame.

I'm trying to use by() for this, but the output is too hard to use. What I
am doing is this:

by(df, list(df$Factor1,df$Factor2),function(x)
my_function(x$col1,x$col2),simplify=TRUE)

and the output is too complex to be used in a simple way. Actually, I just
want something like a data frame, where the results vectors are placed in
one column and the conditions under which they were produced (i.e. the
values of the factors according to which the data set were divided) in other
columns.

This does not seem to be provided by by(), and aggregate only provides me
with the ability to use values from one column, right?
So, are there other functions I could use?

Thanks!

/Fredrik

--
"Life is like a trumpet - if you don't put anything into it, you don't get
anything out of it."


______________________________________________
R-help at 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.
2 days later
#
Hi
new
the
columns
I
by(df, list(df$Factor1,df$Factor2),function(x) 
my_function(x$col1,x$col2),simplify=TRUE)
Error in df$Factor1 : object of type 'closure' is not subsettable

I get this kind of error which is because I do not have any df object 
other than df function from stats package.

If I understand correctly you want maybe either aggregate or ave
pc lot bettong    bet  sira vyber betctc
1   1  56   89.95 109.25 3.000     b  88.37
2   2  66   86.87 100.96 3.156     a     NA
3   3  84   93.91 101.21 3.120     a     NA
4   4  89   89.48 100.00 3.010     a     NA
5   5  41  110.15 116.92 3.597     b 106.37
6   6  44   96.53 106.54 3.057     b     NA
7   7  47   94.94 104.91 2.857     b     NA
8   8  62   90.30 111.05 3.210     b     NA
9   9  64   96.41 102.56 3.180     a  90.79
10 10  65   95.04 101.15 3.200     a     NA
11 11  57   88.27 104.71 3.060     b     NA
12 13  74   91.98 104.93 3.470     a     NA
Group.1 lot bettong    bet   sira
1       a 442  553.69 610.81 19.136
2       b 307  570.14 653.38 18.781
lot  bettong      bet     sira
 [1,] 51.16667 95.02333 108.8967 3.130167
 [2,] 73.66667 92.28167 101.8017 3.189333
 [3,] 73.66667 92.28167 101.8017 3.189333
 [4,] 73.66667 92.28167 101.8017 3.189333
 [5,] 51.16667 95.02333 108.8967 3.130167
 [6,] 51.16667 95.02333 108.8967 3.130167
 [7,] 51.16667 95.02333 108.8967 3.130167
 [8,] 51.16667 95.02333 108.8967 3.130167
 [9,] 73.66667 92.28167 101.8017 3.189333
[10,] 73.66667 92.28167 101.8017 3.189333
[11,] 51.16667 95.02333 108.8967 3.130167
[12,] 73.66667 92.28167 101.8017 3.189333

But maybe I am wrong, I still only try to learn mind reading.
just
in
other
me
get
http://www.R-project.org/posting-guide.html