如何在 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 中修复:替换长度为零

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注