# [R] making custom function compute/return multiple items

Gabor Grothendieck ggrothendieck at myway.com
Sun Sep 26 01:28:02 CEST 2004

```chumpy town <chumpytown <at> gmail.com> writes:

:
: Hello, I'm relatively new to R.  I've read the intro guide, but I
: can't quite figure out how to:
:
: I have a function:
:
: Jcost <- function (theta, in, out) {
:   a <- output - input %*% theta
:   1/2 * t(a) %*% a
: }
:
: where
: "theta" is a 2x1 matrix
: "in" is a 20x2 matrix
: "out" is a 20x1 matrix
: return value is a scaler
:
: This works well when I only want to compute given 1 theta matrix.  How
: do I compute several (say N) 2x1 theta matrices and get back N scaler
: values?

Assuming `theta' is 2xN, apply the formula over the columns, i.e. dimension 2,
of `theta'.

By the way, note that `in', which is used above as a parameter to `Jcost', is
a reserved word in R and so should be avoided.

Jcost <- function(theta, input, output)
apply(as.matrix(theta), 2, function(theta)
1/2 * crossprod(output - input %*% theta))

Jcost(1:2, matrix(1:40,20), 1:20)
Jcost(3:4, matrix(1:40,20), 1:20)

# the following combines both of the above two lines into one:
Jcost(cbind(1:2, 3:4), matrix(1:40,20), 1:20)

```