Ваша функция векторизована, поэтому вы можете ввести вектор и извлечь каждый столбец с помощью example(x_grid)[, "sin"]
или example(x_grid)[, "cos"]
.
example(x_grid)
# sin cos
# [1,] 0.000000000 1.000000000
# [2,] 0.049979169 0.998750260
# [3,] 0.099833417 0.995004165
example(x_grid)[, "sin"]
# [1] 0.000000000 0.049979169 0.099833417 0.149438132 0.198669331
# [6] 0.247403959 0.295520207 0.342897807 0.389418342 0.434965534
Примечание: В этом случае sapply
не рекомендуется, потому что сама функция была векторизована. sapply
сделает его неэффективным. Вот иллюстрация к тесту:
library(microbenchmark)
bm <- microbenchmark(
basic = example(x_grid)[, 1],
sapply = sapply(x_grid, function(x) example(x)[1]),
times = 1000L
)
ggplot2::autoplot(bm)
Если вы хотите построить обе функции, matplot()
может построить каждый столбец одной матрицы.
x_grid <- seq(0, 10, 0.05)
matplot(x_grid, example(x_grid), type = "l")