Как исправить: количество строк в результате не кратно длине вектора (аргумент 1)


Предупреждающее сообщение, с которым вы можете столкнуться при использовании R:

 Warning message:
In cbind(A, B, C):
  number of rows of result is not a multiple of vector length (arg 1)

Это предупреждение обычно появляется, когда вы пытаетесь использовать функцию cbind() для связывания столбцов векторов разной длины.

Следует отметить, что это сообщение является просто предупреждением , и ваш код продолжит работать, но полученные результаты могут отличаться от ожидаемых.

В следующем примере показано, как на практике избежать этого предупреждения.

Как воспроизвести предупреждение

Предположим, мы используем функцию cbind() для связывания трех векторов в столбцы во фрейме данных:

 #define three vectors with different lengths
A = c(4, 2, 3, 6)
B = c(9, 1, 8, 7, 0, 7)
C = c(3, 5, 3, 3, 6, 4)

#column bind three vectors into data frame
df <- cbind(A, B, C)

#view data frame
df

Warning message:
In cbind(A, B, C):
  number of rows of result is not a multiple of vector length (arg 1)
     ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] 4 0 6
[6,] 2 7 4

Функция cbind работает со всеми тремя векторами, но учтите, что значения первого вектора просто повторяются снова и снова.

У Р. это называется «переработкой».

Как избежать предупреждения

Чтобы полностью избежать этого предупреждения, нам необходимо убедиться, что длина каждого из используемых нами векторов одинакова.

Один из способов добиться этого — заполнить недостающие значения в кратчайшем векторе значениями NA следующим образом:

 #calculate max length of vectors
max_length <- max(length(A), length(B), length(C))

#set length of each vector equal to max length
length(A) <- max_length                      
length(B) <- max_length
length(C) <- max_length 

#cbind the three vectors together into a data frame
df <- cbind(A, B, C)

#view data frame
df

      ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] NA 0 6
[6,] NA 7 4

Обратите внимание, что на этот раз мы не получаем никаких предупреждающих сообщений, а короткие значения векторов просто дополняются значениями NA, чтобы гарантировать, что каждый из трех используемых нами векторов имеет одинаковую длину.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:

Как исправить в R: аргументы содержат разное количество строк
Как исправить в R: ошибка выбора неиспользуемых аргументов
Как восстановить в R: замена имеет нулевую длину

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *