如何修复:要替换的项目数量不是替换长度的倍数


在 R 中您可能遇到的错误是:

 Warning message:
  number of items to replace is not a multiple of replacement length

当您尝试将向量或数据框列中一定数量的元素(假设 3 个元素)替换为不同数量的元素(假设 6 个元素)时,会发生此错误。

本教程准确解释了如何修复此错误。

如何重现错误

假设我们在 R 中有以下数据框,第一列中有一些缺失值:

 #create data frame
df <- data. frame (a=c(3, NA, 7, NA, NA, 14),
                 b=c(4, 4, 5, 12, 13, 18))

#view data frame
df

   ab
1 3 4
2 NA 4
3 7 5
4 NA 12
5 NA 13
6 14 18

现在假设我们尝试用第二列中的值替换第一列中的缺失值:

 #attempt to replace missing values in first column with values in second column
df$a[is. na (df$a)] <- df$b

Warning message:
In df$a[is.na(df$a)] <- df$b:
  number of items to replace is not a multiple of replacement length

我们收到错误,因为我们尝试用第二列中的6 个值替换第一列中的3 个缺失值。

如何修复错误

修复此错误的最简单方法是简单地使用ifelse()语句:

 #replace missing values in column 'a' with corresponding values in column 'b'
df$a <- ifelse(is. na (df$a), df$b, df$a)

#view updated data frame
df

   ab
1 3 4
2 4 4
3 7 5
4 12 12
5 13 13
6 14 18

ifelse()语句检查“a”列的值是否为空。如果是,则将其替换为“b”列中的相应值,否则将其保留。

修复此错误的另一种方法是简单地将所有缺失值替换为特定数字:

 #replace all missing values in column 'a' with zero
df$a[is. na (df$a)] <- 0

#view updated data frame
df

   ab
1 3 4
2 0 4
3 7 5
4 0 12
5 0 13
6 14 18

使用此方法,“a”列中的每个缺失值都被替换为零。

其他资源

如何在 R 中修复:强制引入的 NA
如何在 R 中修复:索引越界
如何在 R 中修复:较长物体的长度不是较短物体长度的倍数

添加评论

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