Как исправить в R: замена имеет X строк, данные имеют Y


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

Error in `$<-.data.frame`(`\*tmp\*`, conf_full, value = c("West", "West", : 
 replacement has 3 rows, data has 5

Эта ошибка возникает, когда вы пытаетесь добавить новый столбец во фрейм данных, значения которого основаны на существующем столбце, но вам не удается сначала создать новый столбец.

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

Как воспроизвести ошибку

Предположим, мы создаем следующий фрейм данных в R:

#create data frame
df <- data.frame(conference=c('W', 'W', 'W', 'E', 'E'),
 points=c(99, 90, 86, 88, 95),
 assists=c(33, 28, 31, 39, 34)) 

#view data frame
df

 conference points assists
1 W 99 33
2 W 90 28
3 W 86 31
4 E 88 39
5 E 95 34

Теперь предположим, что мы пытаемся добавить новый столбец во фрейм данных с именем conf_full :

#attempt to create new column based on conference name
df$conf_full[which(df$conference=='W')] <- ' West '
df$conf_full[which(df$conference=='E')] <- ' East '

Error in `$<-.data.frame`(`\*tmp\*`, conf_full, value = c("West", "West", : 
 replacement has 3 rows, data has 5

Мы получаем ошибку, потому что имя переменной conf_full еще не существует, а это значит, что мы еще не можем присвоить значения этому столбцу.

Как избежать ошибки

Чтобы избежать этой ошибки, мы можем сначала создать переменную conf_full и просто присвоить ей значения NA:

#create conf_full variable
df$conf_full <- NA

Теперь, когда переменная существует, мы можем присвоить ей значения:

#create new column based on conference
df$conf_full[which(df$conference=='W')] <- ' West '
df$conf_full[which(df$conference=='E')] <- ' East '

#view updated data frame
df

 conference points assists conf_full
1 W 99 33 West
2 W 90 28 West
3 W 86 31 West
4 E 88 39 East
5 E 95 34 East

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

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.