English 中文(简体)
如果Xy坐标位于特定试金体内,避免漏洞,那么快速测试?
原标题:quickly test if xy coordinates are within a given rectangle and avoid loops?
  • 时间:2012-04-30 21:03:15
  •  标签:
  • r

我需要确定位于特定试金体内的一组微米坐标的一小部分。 这一试金字被定义为双方距离协调制度的边缘相当遥远的地区(在这种情况下,协调制度受大约(-50, - 20),(-50, 20),(50,20),(50,20),(50,-20)。 此外,我希望能够测试与边缘不同距离的试金星结果。 我的方法如下:

  # set initial limits to the coordinate system
  lim.xleft = -50
  lim.xright = 50
  lim.ybottom = -20
  lim.ytop = 20

frac.near.edge <- function(coord.pairs, tolerance){
  # set the coordinates of the rectangle of interest
  exclude.xleft = lim.xleft + tolerance
  exclude.xright = lim.xright - tolerance
  exclude.ybottom = lim.ybottom + tolerance
  exclude.ytop = lim.ytop - tolerance
  out <- vector()
  # loop through the pairs testing whether the point is inside the rectangle or outside
  for(i in 1:nrow(coord.pairs)){
    if(coord.pairs[i, 1] > exclude.xleft & coord.pairs[i, 1] < exclude.xright &  coord.pairs[i, 2] > exclude.ybottom & coord.pairs[i, 2] < exclude.ytop){
      out[i] <- "in"
    } else {
      out[i] <- "out"
    }
  }
  # return how many points were inside the rectangle and how many were outside
  return(table(out))
}

# try it out on something much bigger!
foo <- data.fram(x = runif(100), y = runif(100))
system.time(frac.near.edge(foo,  tolerance = 5))

大型数据集(按10°5×y pairs的顺序排列的地雷)的浓度为very。 我如何能够加快这一进程? 环形周围的方法?

问题回答
exclude.xleft = lim.xleft + tolerance
exclude.xright = lim.xright - tolerance
exclude.ybottom = lim.ybottom + tolerance
exclude.ytop = lim.ytop - tolerance
out <- c("out", "in")[1+( findInterval(coord.pairs[ , 1], c(exclude.xleft, exclude.xright))==1 &
                       findInterval(coord.pairs[ , 2], c(exclude.ybottom,   exclude.ytop))==1)]

在50K试验案例中,你的方法为0.01和19。

coord.pairs<- cbind(rnorm(50000, 0,50), rnorm(1000,0,20)); tolerance=10




相关问题
How to plot fitted model over observed time series

This is a really really simple question to which I seem to be entirely unable to get a solution. I would like to do a scatter plot of an observed time series in R, and over this I want to plot the ...

REvolution for R

since the latest Ubuntu release (karmic koala), I noticed that the internal R package advertises on start-up the REvolution package. It seems to be a library collection for high-performance matrix ...

R - capturing elements of R output into text files

I am trying to run an analysis by invoking R through the command line as follows: R --no-save < SampleProgram.R > SampleProgram.opt For example, consider the simple R program below: mydata =...

R statistical package: wrapping GOFrame objects

I m trying to generate GOFrame objects to generate a gene ontology mapping in R for unsupported organisms (see http://www.bioconductor.org/packages/release/bioc/vignettes/GOstats/inst/doc/...

Changing the order of dodged bars in ggplot2 barplot

I have a dataframe df.all and I m plotting it in a bar plot with ggplot2 using the code below. I d like to make it so that the order of the dodged bars is flipped. That is, so that the bars labeled "...

Strange error when using sparse matrices and glmnet

I m getting a weird error when training a glmnet regression. invalid class "dgCMatrix" object: length(Dimnames[[2]]) must match Dim[2] It only happens occasionally, and perhaps only under larger ...

Generating non-duplicate combination pairs in R

Sorry for the non-descriptive title but I don t know whether there s a word for what I m trying to achieve. Let s assume that I have a list of names of different classes like c( 1 , 2 , 3 , 4 ) ...

Per panel smoothing in ggplot2

I m plotting a group of curves, using facet in ggplot2. I d like to have a smoother applied to plots where there are enough points to smooth, but not on plots with very few points. In particular I d ...

热门标签