Как исправить в r:plot.new еще не вызывался
Ошибка, с которой вы можете столкнуться при использовании R:
Error in plot.xy(xy.coords(x, y), type = type, ...):
plot.new has not been called yet
Эта ошибка возникает, когда вы пытаетесь выполнить действие, требующее наличия графика в R, но график не существует.
Следующие примеры показывают, как исправить эту ошибку на практике.
Пример 1: Как исправить ошибку с помощьюlines()
Предположим, мы пытаемся построить подобранную линию регрессии в R:
#createdata
df <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28))
#fit polynomial regression model
model <- lm(y~poly(x, 2), data=df)
#define new sequence of x-values
new_x <- seq(min(df$x), max(df$y))
#attempt to plot fitted regression line
lines(new_x, predict(model, newdata = data. frame (x=new_x)))
Error in plot.xy(xy.coords(x, y), type = type, ...):
plot.new has not been called yet
Мы получаем сообщение об ошибке, поскольку не можем использовать функциюlines () без предварительного создания пути в R.
Чтобы исправить эту ошибку, мы можем сначала создать точечную диаграмму, а затем использовать функциюlines () :
#create data
df <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28))
#fit polynomial regression model
model <- lm(y~poly(x, 2), data=df)
#define new sequence of x-values
new_x <- seq(min(df$x), max(df$y))
#create scatterplot of x vs. y values
plot(y~x, data=df)
#attempt to plot fitted regression line
lines(new_x, predict(model, newdata = data. frame (x=new_x)))
Обратите внимание, что мы не получаем ошибку, поскольку сначала использовали функциюplot() , а затем функциюlines () .
Пример 2: Как исправить ошибку с помощью abline()
Предположим, мы пытаемся создать диаграмму рассеяния с прямой горизонтальной линией в R:
#create data
df <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28))
#attempt to add horizontal line at y=10
abline(a=10, b=0, lwd=2)
Error in plot.xy(xy.coords(x, y), type = type, ...):
plot.new has not been called yet
Мы получаем сообщение об ошибке, поскольку не можем использовать функцию abline() без предварительного создания графика в R.
Чтобы исправить эту ошибку, мы можем сначала создать точечную диаграмму, а затем использовать функцию abline() :
#createdata
df <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28))
#create scatterplot of x vs. y
plot(y~x, data=df)
#add horizontal line at y=10
abline(a=10, b=0, lwd=2)
Обратите внимание, что мы не получаем ошибку, поскольку сначала использовали функциюplot() , а затем функцию abline() .
Связано: Как использовать aline() в R для добавления прямых линий к путям
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:
Как исправить в R: неожиданная строковая константа
Как исправить в R: неверная формула шаблона в ExtractVars
Как исправить в R: аргумент не является ни числовым, ни логическим: return na