修改函数输入变量,实现x.99的输出
Modify function input variable to achieve output of x.99
我的数据是这样的:
library(tidyverse)
df <- tibble(
x_val = c(10.3, 14.3, 18.7)
)
将每个 x_val
传给 my_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
据我了解,您有一个复杂的函数 f(x_val),您需要 f 的反函数。您想通过了解 y_val 来找到 x_val。通过检查 Solving for the inverse of a function in 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)
我的数据是这样的:
library(tidyverse)
df <- tibble(
x_val = c(10.3, 14.3, 18.7)
)
将每个 x_val
传给 my_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
据我了解,您有一个复杂的函数 f(x_val),您需要 f 的反函数。您想通过了解 y_val 来找到 x_val。通过检查 Solving for the inverse of a function in 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)