[R] comparison of two vectors

Ben Bolker bolker at ufl.edu
Tue Dec 4 00:05:58 CET 2007



tintin_et_milou wrote:
> 
> Thanks for your help, but there is some more problem. The two vectors have
> not the same length so there is a problem with cbind. I give you an
> example. My first vector is
> 
>  >g[g[,1]>2035 & g[,1]<2050,]
>     
>      M.Z     Intensity
>  2035.836  652.9494
>  2035.939  664.5841
>  2036.043  696.0554
>  2036.146  719.8969
>  2036.250  750.7660
>  2036.767  816.5243
>  2036.870  806.8539
>  2036.974  774.2397
>  2037.491  777.2780
>  2039.147  589.9075
>  2042.978  807.7167
>  2043.082  820.9365
>  2043.289  849.4942
>  2043.393  883.8975
>  2043.495  900.9681
>  2043.600  922.3238
>  2043.704  956.5985
>  2043.911  978.9377
>  2044.015  969.1999
> 
> and the second one is:
>> f[1:9,]
>     M.Z      Intensity  Echantillon Position
>  1802.809 1064.1210           1       A1
>  1865.615 8799.4880           1       A1
>  1896.426 1667.5908           1       A1
>  2001.064  515.6214           1       A1
>  2012.016  837.5599           1       A1
>  2021.589 4373.6364           1       A1
>  2028.425  832.6896           1       A1
>  2036.663    0.0000           1       A1
>  2043.497    0.0000           1       A1
> 
> 
> The two vectors have not the same number of observations and in fact i
> would like to replace all the intensity of zero of the second vector by
> the value of the intensity of the nearest m/Z of the first vector.
> In this case, the value 816.5243 for the m/Z 2036.663 of the second vector
> and 900.9681 for the intensity corresponding at m/Z=2043.497.
> 
> Your method give me the intensity of the farest m/Z.
> 
> Thanks you again.
> Loïc
> 
> 
> Ben Bolker wrote:
>> 
>> 
>> 
>> ## construct sample data
>> m1 =
>>   matrix(c(1000.235,1000.356,
>>     125,126.5),ncol=2,
>>          dimnames=list(NULL,c("mZ","I")))
>> 
>> y = c(995.547,1000.320)
>> 
>> ## compute distances, set diagonal to infinity
>> d = as.matrix(dist(cbind(m1[,1],y)))
>> diag(d) <- Inf
>> 
>> ## find minimum distances, extract values
>> cbind(y,m1[apply(d,2,which.min),2])
>> 
>>   Ben Bolker
>> 
>> 
> 
> 

  oops -- I think you should get the distance matrix via some form of

distfun <- function(x1,x2) { (x1-x2)^2 }

outer(m1[,1],y,distfun)

  my first answer was simply wrong.
  (I don't have time to test this -- play around to make sure
I put the vectors in the right order.)

  cheers
    Ben

-- 
View this message in context: http://www.nabble.com/comparison-of-two-vectors-tf4936213.html#a14140387
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list