0

我的数据如下所示:

library(tidyverse)
df <- tibble(
    x_val = c(10.3, 14.3, 18.7)
)

在通过每个x_valmy_fun...

my_fun <- function(x) {
    x * pi
}

df %>% rowwise() %>% mutate(y_val = my_fun(x_val))

...我得到以下信息:

# A tibble: 3 × 2
x_val    y_val
<dbl>    <dbl>
1  10.3 32.35840
2  14.3 44.92477
3  18.7 58.74778

我如何反转函数(不只是除以 pi!因为我的实际函数要复杂得多)以找到合适的值x_val来获得y_val最接近的integer - 0.01.. 来实现x.99

32.99
44.99
58.99
4

1 回答 1

1

据我了解,您有一个复杂的函数 f(x_val),并且您想要 f 的反函数。您想通过知道 y_val 来找到 x_val。通过检查R 中函数的逆求解,您可以尝试(调整上下部分,我不知道您的函数的限制):

inverse = function (f, lower = -100, upper = 100) {
  function (y) uniroot((function (x) f(x) - y), lower = lower, upper = upper)[1]
}

yourfunction_inverse = inverse(my_fun, 0.1, 100)

结果将是

results <- sapply(c(32.99, 44.99, 58.99), yourfunction_inverse)
于 2016-10-26T16:02:12.340 回答