求R中的循环的x截距和y截距

时间:2012-11-25 21:01:30

标签: r

如何找到R的循环的x-intercept和y-intercept(全部四个)?

# this will generate an example dataframe mydf
x <- sin(seq(0,2*pi,0.2) + rnorm(1))
y <- cos(seq(0,2*pi,0.2) + rnorm(1))

mydf <- data.frame(x,y)
plot(mydf)
abline(h=0)
abline(v=0)

impression of the loop

目前我尝试了两个类似的功能,分为北/南/东/西 并寻找距离轴最近的点。这是低效且不精确的,因为这一点可能很遥远。

getYintercept <- function(mdf){
  R1 <- mdf$y[which.min(subset(mdf, y>0)$y)] # north
  R2 <- mdf$y[which.min(subset(mdf, y<0)$y)] # south
  return(rbind(R1,R2))
}

因此我想插入(predictapprox)这一点。 如何才能最优雅地解决这个问题?

1 个答案:

答案 0 :(得分:2)

以下是approxfun解决方案:

intercepts <- function(x,y) {
  x.s <- approxfun(x[y<=0], y[y<=0])(0)
  x.n <- approxfun(x[y>=0], y[y>=0])(0)
  y.w <- approxfun(y[x<=0], x[x<=0])(0)
  y.e <- approxfun(y[x>=0], x[x>=0])(0)

  list(x.s, x.n, y.w, y.e)
}

此处,x.s是南y截距的x值,依此类推。