Hello,

Simple question with reproducible example code.
The best way to go is to know to what dimension you want to apply the function, the 1st, and to write the function in such a way as to have the passed rows as the first argument. If it has other arguments, they go after. Since your function is already written like this, there's little left to be done.

d2 <- apply(x, 1, distancer, y)  # note the other arg.
dim(d2)
all.equal(distances, t(d2))

Why this transpose? Because apply is passing _row_vectors_ and the function's return values are vectors, in R, _columns_. Were it applying the function to columns and the return value would be with the right dims. Like this just assign

d2 <- t(d2) # or d2 <- t(apply(...etc...))

Hope this helps,

Rui Barradas


Em 15-06-2012 12:27, Schumacher, G. escreveu:
Dear subscribers,

I have made a simulation using loops rather than apply, simply because the loop 
function seems more natural to me. However, the current simulation takes 
forever and I have decided - finally - to learn how to use apply, but - as many 
other people before me - I am having a hard time changing habits. My current 
problem is:

My current code for the loop is:
distances <- matrix(NA, 1000, 5)
distancer <- function(x, y){-(abs(x-y))}
x <- as.matrix(rnorm(1000, 5, 1.67))
y <- rnorm(5, 5, 1.67)

for (v in 1:1000){
distances[v,] <- distancer(x[v,], y)
}

The goal is to calculate the distances between the preferences of each voter 
(X) and all parties (Y). This gives a 1000 by 5 matrix (distances).

If I want to transform this to apply, what would be the best way to go? More 
specifically, I am not sure what to put into the X part of the apply function.

Sorry, for asking this question that is already much debated, I just don't seem 
to be able to apply to my own case. Many thanks in advance.

Kind regards,

Gijs Schumacher

        [[alternative HTML version deleted]]

______________________________________________
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