#r #plot
#r #график
Вопрос:
Я пытаюсь построить функцию плотности вероятности с ограничением x от -1 до 0 и от 0 до 1, поэтому я делаю два графика:
x1 = seq(-1, 0, 0.01)
x2 = seq(0, 1, 0.01)
eq1 = function(x) {(1 x)^2}
eq2 = function(x) {(1 x)^3}
plot(x1, eq1, col="red")
par(new = TRUE)
plot(x2, eq2, type = "l", col = "green")
Однако я получаю следующую ошибку:
Ошибка в xy.координаты (x, y, xlabel, ylabel, log): длины ‘x’ и ‘y’ отличаются.
Я не уверен, в чем дело.
Комментарии:
1. Вы могли бы заменить
eq1 = function(x){(1 x)^2}
наeq1 <- (1 x1)^2
. Суть в том, чтобы построить векторы против векторов, а не векторы против функций. Вы также могли бы изучитьcurve()
свои потребности в построении графика.2. @JohnColeman да, кажется, что я должен, я просто использую
=
из-за опыта программирования3. @compsciman
=
vs<-
— это в основном просто вопрос вкуса. Проблема здесь не в этом.eq1 <- (1 x1)^2
вообще не определяет функцию. Он определяет вектор соответствующихy
значений. Использованиеy1 <- (1 x1)^2
сделало бы это еще более понятным.4. или
plot(x1, eq1(x1))
Ответ №1:
Как было указано в комментариях, вторым аргументом для plot()
(т. Е. y
) должен быть вектор:
x1 = seq(-1, 0, 0.01)
x2 = seq(0, 1, 0.01)
eq1 = function(x) {(1 x)^2}
eq2 = function(x) {(1 x)^3}
plot(x1, eq1(x1), col="red")
par(new = TRUE)
plot(x2, eq2(x2), type = "l", col = "green")
Комментарии:
1. Я получаю
attempt to apply non-function
за это