R : Calling a Function -
i have matrix :
x <- cbind(x1 = 3, x2 = c(4:1, 2:5)) dimnames(x)[[1]] <- letters[1:8]
how following codes work ?
cave <- function(x, c1, c2) c(mean(x[c1]), mean(x[c2])) apply(x,1, cave, c1="x1", c2=c("x1","x2"))
particularly not understanding argument , c(mean(x[c1]), mean(x[c2]))
inside function cave
.
also call function in way cave(x,a,b)
. inside apply
function input when call cave
function ?
when define function, last thing listed implicitly returned. when define cave
as
cave <- function(x, c1, c2) { c(mean(x[c1]), mean(x[c2])) }
this same as
cave <- function(x, c1, c2) { return(c(mean(x[c1]), mean(x[c2]))) }
in r, vectors defined concatenating elements using c()
. c(a, b)
makes vector of length 2 elements a
, b
. in case, a
mean of input x
@ index given c1
, b
mean of x
@ index given c2
.
when apply()
function x
on dimension 1, you're computing cave()
on every row of x
.
the syntax of apply()
follows:
apply(x, # object input function 1, # dimension of x on apply function, 1=rows, 2=columns cave, # function apply c1="x1", c2=c("x1", "x2") # further arguments function )
apply cave()
first row gives vector consisting of mean of x1
(which x1
since it's mean of single number) , mean of x1
, x2
. mean of 3 3 , mean of 3 , 4 3.5, output c(3, 3.5)
.
we repeat every row in x
, , in end this:
b c d e f g h [1,] 3.0 3 3.0 3 3.0 3 3.0 3 [2,] 3.5 3 2.5 2 2.5 3 3.5 4
you can see column a
corresponds cave()
on row a
of x
, on.
Comments
Post a Comment