用R中的列中值填充dataframe列中缺少的值

用R中的列中值填充dataframe列中缺少的值,r,dataframe,missing-data,R,Dataframe,Missing Data,我有一个数据框架,其中一些列的类型为“factor”,而另一些列的类型为“numeric”。任何“因子”列中都没有缺失值 我尝试使用以下代码将每列中缺少的值替换为列中值: for(i in 1:ncol(df3)){ df3[is.na(df3[,i]), i] <- median(df3[,i], na.rm = TRUE) } 我确信只有数值列中缺少值,为什么会出现此错误 更重要的是,如何用各自的列中位数填充每列中缺少的值?即使df3[is.na(df3[,I]),I]有零行,R

我有一个数据框架,其中一些列的类型为“factor”,而另一些列的类型为“numeric”。任何“因子”列中都没有缺失值

我尝试使用以下代码将每列中缺少的值替换为列中值:

for(i in 1:ncol(df3)){
  df3[is.na(df3[,i]), i] <- median(df3[,i], na.rm = TRUE)
}
我确信只有数值列中缺少值,为什么会出现此错误

更重要的是,如何用各自的列中位数填充每列中缺少的值?

即使
df3[is.na(df3[,I]),I]
有零行,R仍然需要计算RHS
中值(df3[,I],na.rm=TRUE)
。您可以添加一个检查,以仅替换数字列中缺少的值:

for(i in seq_along(df3)) {
  if (is.numeric(df3[, i])) {
    df3[is.na(df3[, i]), i] <- median(df3[, i], na.rm = TRUE)
  }
}
用于(沿(df3)的序列中的i){
if(是数字的(df3[,i])){
df3[is.na(df3[,i]),i]
for(i in seq_along(df3)) {
  if (is.numeric(df3[, i])) {
    df3[is.na(df3[, i]), i] <- median(df3[, i], na.rm = TRUE)
  }
}