NA由约()函数R返回

时间:2015-09-30 11:11:45

标签: r interpolation distribution

obs=log(rexp(500))
plot(density(obs))

enter image description here

我使用approxfun() R函数创建捕获此分布的函数,并且能够为传递的任何y值返回x值(通过使用插值)。

fun=approxfun(density(obs)$y)
# create a sequence of x values
seq=round(seq(min(obs),max(obs),length.out=50),2)
# find out which y values assigned by fun are not equal to NA
seq[-which(is.na(fun(seq)))]

返回

1.11 1.27 1.43 1.60

为什么所有x值都低于1(从-6.38 to 0.95确切)传递给函数全部分配了NA y值?该函数是为-6, -2等定义的?我希望在0, 0.13等周围插入值,而不是NAs ...

1 个答案:

答案 0 :(得分:1)

应该是这样的:

fun <- approxfun(density(obs))

编写fun=approxfun(density(obs)$y)时,不提供x值。所以,你应该省略$y

因此:

obs <- log(rexp(500))
fun <- approxfun(density(obs))
seq <- round(seq(min(obs), max(obs), length.out = 50), 2)
seq[-which(is.na(fun(seq)))]
# numeric(0)

不产生NA s。