2013-07-30 3 views
2

Извините, это может быть базовое, но я новичок. Я буду делать много кривых, поэтому некоторые советы будут полезны для меня.Функция кривой в базе R

У меня есть функция, которую я хочу построить:

f <- function(x) sum(4*sin(x*seq(1,21,2))/(pi*seq(1,21,2))) 

с использованием

curve(f, -pi, pi, n=100) 

К сожалению, это не работает для меня. Пожалуйста, порекомендуйте. Thanks

+0

Поскольку ваша функция имеет в ней 'sum', она не векторизована (то есть' f (1: 100) 'возвращает 1 результат). –

ответ

4

Вы не в векторе. В настоящий момент он принимает только один скалярный вход и выводит одно возвращаемое значение. curve ожидает, что он должен иметь возможность подавать вектор значений x, которые он хочет построить, и должен получать вектор значений ответа. Самое простое решение - просто использовать Vectorize для автоматического преобразования вашей функции в одну, которая может принимать векторные входы.

f2 <- Vectorize(f) 
curve(f2, -pi, pi, n = 100) 

Однако вы можете просто написать векторную версию функции напрямую.

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