Hi,

I have an integer which is extracted from a dataframe, which is sorted by 
another column of the dataframe.
Now I would like to remove some elements of the integer, which are near to 
others by their value. For example: integer: c(1,20,2,21) should be c(1,20).

I tried to write a function, but for some reason, somethings won't work

x <- 1:20
near <- function(x,th) {
    nr <- NROW(x)
        for (i in 1:(nr-1)){
        for (j in (i+1):nr){
            if (j > nr) break
            t=0
            if (abs(x[i] - x[j]) < th) t = 1
            if (t== 1) x <- x[-j]
            if (t== 1) nr <- nr-1
            if (t== 1) j <- (j-1)
            cat (" i",i," j",j,"\n")
            }} 
x
}
near(x,10)


This gives you 1  3  7 13 17 while I was suspecting 1, 20 as the outcome.
If you look at the intermediate results of the cat instruction, you see that, 
after he substracted a number, he skipped the next one.

Sorting the integer is not an option, the order is important.
I used an integer from 1:20 as an example, while x <- sample((1:20),20) is 
maybe a bit more representable for our data, but isn't reproducible for the 
output of the function.

Maybe there is already an R-function, which does such thing, or what is wrong 
with my coding?


thanks a lot for your time


Bart
        [[alternative HTML version deleted]]

______________________________________________
[email protected] 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