On 30/04/2010 7:55 AM, soeren.vo...@eawag.ch wrote:
Hi Mohamed, thanks for your answer. Anyway, the "how to" is exactly my problem, since ...

fun2 <- function(x){
please_use_aggregate_and_apply_in_some_way_and_return_the_output_of_my_example_as_requested (fun(x));
}
fun2(df);

... unfortunately returns an error ;-). Could you please give a simple example? Thanks, Sören

I would have recommended a nested for loop, but here it is with apply:

> df <- data.frame(a=1:10, b=11:20, c=21:30)
> f <- function(x,y) sum(x*y)
> apply(df, 2, function(x) apply(df, 2, function(y) f(x,y)))
    a    b    c
a  385  935 1485
b  935 2485 4035
c 1485 4035 6585

To me this looks clearer:

result <- matrix(NA, 3,3)
for (i in 1:3)
 for (j in 1:3)
   result[i,j] <- f(df[,i], df[,j])

Duncan Murdoch
On 30.04.2010, at 12:59, Mohamed Lajnef wrote:

Hi Soeren

Apply or aggregate functions

best regards
M
soeren.vo...@eawag.ch a écrit :
Hello, a data.frame, df, holds the numerics, x, y, and z. A function, fun, should return some arbitrary statistics about the arguments, e.g. the sum or anything else. What I want to do is to apply this function to every pair of variables in df, and the return should be a matrix as found with cov. How can I achieve that? Thanks, Sören

df <- data.frame(x=1:10, y=11:20, z=21:30);
fun <- function(x){
 return(sum(x));
}
# and now???

______________________________________________
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.


______________________________________________
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