Как исправить: количество строк в результате не кратно длине вектора (аргумент 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: замена имеет нулевую длину