Як виправити: помилка в 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: NAs, введені примусово
Як ремонтувати в R: підказка поза межами
Як виправити: більша довжина об’єкта не є кратною меншій довжині об’єкта

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *