如何找到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)
目前我尝试了两个类似的功能,分为北/南/东/西 并寻找距离轴最近的点。这是低效且不精确的,因为这一点可能很遥远。
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))
}
因此我想插入(predict
,approx
)这一点。
如何才能最优雅地解决这个问题?
答案 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
值,依此类推。