Как исправить: ошибка в xy.coords(x, y, xlabel, ylabel, log): длины «x» и «y» различаются.
Распространенная ошибка, с которой вы можете столкнуться в R:
Error in xy.coords(x, y, xlabel, ylabel, log): 'x' and 'y' lengths differ
Эта ошибка возникает, когда вы пытаетесь создать график двух переменных, но переменные имеют разную длину.
В этом руководстве объясняется, как именно исправить эту ошибку.
Как воспроизвести ошибку
Предположим, мы пытаемся создать диаграмму рассеяния следующих двух переменных в R:
#define x and y variables x <- c(2, 5, 5, 8) y <- c(22, 28, 32, 35, 40, 41) #attempt to create scatterplot of x vs. y plot(x, y) Error in xy.coords(x, y, xlabel, ylabel, log): 'x' and 'y' lengths differ
Мы получаем ошибку, поскольку длины x и y не равны.
Мы можем подтвердить это, напечатав длину каждой переменной:
#print length of x length(x) [1] 4 #print length of y length(y) [1] 6 #check if length of x and y are equal length(x) == length(y) [1] FALSE
Как исправить ошибку
Самый простой способ исправить эту ошибку — просто убедиться, что два вектора имеют одинаковую длину:
#define x and y variables to have same length x <- c(2, 5, 5, 8, 9, 12) y <- c(22, 28, 32, 35, 40, 41) #confirm that x and y are the same length length(x) == length(y) [1] TRUE create scatterplot of x vs. y plot(x, y)
Если один вектор окажется короче другого, вы можете отображать только значения до длины более короткого вектора.
Например, если вектор xa имеет 4 значения, а вектор y — 6 значений, мы могли бы создать диаграмму рассеяния, используя только первые 4 значения каждого вектора:
#define x and y variables x <- c(2, 5, 5, 8) y <- c(22, 28, 32, 35, 40, 41) #create scatterplot of first 4 pairwise values of x vs. y plot(x, y[1: length (x)])
Обратите внимание, что для создания облака точек используются только первые четыре значения каждого вектора.
Дополнительные ресурсы
Как исправить в R: NA, введенные по принуждению
Как починить в R: подсказка за пределами
Как исправить: длина более длинного объекта не кратна длине более короткого объекта.