2016-02-03 6 views
1

Я написал функцию R myplot(), которая рисует кривую, соответствующую заданной функции FUN на интервале [-10, 10].R: Функция как аргумент другой функции

myplot <- function(FUN) 
{ 
    curve(FUN(x), xlim = c(-10, 10)) 
} 

Например

myplot(FUN = dnorm) 

дает

enter image description here

Как я могу добавить аргументы FUN? Например, предположим, что я хочу, чтобы построить нормальную плотность со средним значением 5.

После комментария @ akrun, я могу сделать что-то вроде этого:

myplot <- function(FUN, ...) 
{ 
    args <- list(...) 
    curve(FUN(x, unlist(args)), xlim = c(-10, 10)) 
} 
myplot(dnorm, mean = 5) 

Но тогда

> myplot(FUN = dnorm) 
    Error in FUN(x, unlist(args)) : 
     Argument non numérique pour une fonction mathématique 

Кроме того, myplot(FUN = dnorm, mean = 5, sd = 2) не дает ожидаемого изображения ...

+0

Попробуйте 'dots <- list (...); кривая (FUN (x, unlist (точки)), xlim = c (-10, 10)) ' – akrun

+0

@akrun: Спасибо! Я редактировал свой пост с дополнительными вопросами. Еще раз спасибо. – user7064

+0

Если у вас есть другой вопрос, – erasmortg

ответ

2

Ваша оригинальная функция работает нормально (но у вашего оригинального примера была опечатка)

myplot <- function(FUN, ...) 
{ 
    curve(FUN(x, ...), xlim = c(-10, 10)) 
} 

myplot(dnorm) 
myplot(dnorm, mean = 5) 
myplot(dnorm, mean = 5, sd=2) 

все, похоже, сработало.

Смежные вопросы