[R] Subtracting elements of a vector from each other stepwise

arun smartpink111 at yahoo.com
Tue Sep 10 23:06:39 CEST 2013


Hi,
Not sure this is what you wanted:


 sapply(seq_along(x), function(i) {x1<- x[i]; x2<- x[-i]; x3<-x2[which.min(abs(x1-x2))];c(x1,x3)})
#     [,1] [,2] [,3] [,4]
#[1,]   17   19   23   29
#[2,]   19   17   19   23
A.K.



----- Original Message -----
From: Michael Budnick <mbudnick08 at snet.net>
To: r-help at r-project.org
Cc: 
Sent: Tuesday, September 10, 2013 4:06 PM
Subject: [R] Subtracting elements of a vector from each other stepwise

I am trying to figure out how to create a loop that will take the
difference of each member of a vector from each other and also spit out
which one has the least difference.

I do not want the vector member to subtract from itself or it must be able
to disregard the 0 obtained from subtracting from itself.

For example:

x = c(17,19,23,29)

1. abs(x-x[1]) = (0, 2, 6, 12)

2. abs(x-x[2]) = (2, 0, 4, 10)

3. abs(x-x[3]) = (6, 4, 0, 6)

4. abs(x-x[4]) = (12, 10, 6, 0)

The code would then spit out that x[1] and x[2] are the least different,
but if there were 2 separate values that were equal the program would
recognize them as least different.

A little extra help would be to also make this go down row by row through
horizontal vectors.

I am new to R and all my for loops I'm trying come back null.

Thanks for any help.

    [[alternative HTML version deleted]]

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




More information about the R-help mailing list