如何修复:要替换的项目数量不是替换长度的倍数
在 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 中修复:较长物体的长度不是较短物体长度的倍数