R 如何抓住;需要至少两个非NA值来插值“1”;

R 如何抓住;需要至少两个非NA值来插值“1”;,r,R,从这里我得到了一个很好的解决方案。但是它崩溃了,如果没有拦截,当然像这个例子: x <- sin(seq(0,2*pi,0.2) + rnorm(1)) y <- cos(seq(0,2*pi,0.2) + rnorm(1)) intercepts(x,y+10) intercepts <- function(x,y) { x.s <- approxfun(x[y<=0], y[y<=0])(0) x.n <- approxfun(x[y&

从这里我得到了一个很好的解决方案。但是它崩溃了,如果没有拦截,当然像这个例子:

x <- sin(seq(0,2*pi,0.2) + rnorm(1))
y <- cos(seq(0,2*pi,0.2) + rnorm(1))

intercepts(x,y+10)


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)
}

直截了当的解决方案,在出现任何错误时返回NA:

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

  list(x.s, x.n, y.w, y.e)
}
拦截
intercepts <- function(x,y) {
  x.s <- tryCatch(approxfun(x[y<=0], y[y<=0])(0), error=function(e) NA)
  x.n <- tryCatch(approxfun(x[y>=0], y[y>=0])(0), error=function(e) NA)
  y.w <- tryCatch(approxfun(y[x<=0], x[x<=0])(0), error=function(e) NA)
  y.e <- tryCatch(approxfun(y[x>=0], x[x>=0])(0), error=function(e) NA)

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