首页 > 解决方案 > 在 R 中更新用户定义函数中的某些列值

问题描述

我有以下代码可以用中值更新 R 中数据框中的列。这很好用,但我希望能够从程序的其他部分调用它作为函数,传递其他数据帧和列。

medianVal <- median(df$column, na.rm = T)
df$column[is.na(df$column)] <- medianVal

我尝试使用的代码的逻辑是传递数据帧和列,获取中值,更新并返回数据帧

updateWithMedian <- function(DataFrame, Column)
{
  medianValue <- median(Column, na.rm = T)
  Column[is.na(DataFrame$Column)] <- medianValue
  return(DataFrame)
}

函数中的 DataFrame[[Column]] 帮助我识别列,但我仍在努力将 NA 值更新为中位数。

例如,代码

DataFrame[[Column]][is.na(DataFrame$Column)] <- medianValue

感觉像是正确的语法。

标签: rfunctiondataframe

解决方案


你在这里混合符号。如果使用带引号的列名,则不能使用dataframe$variable这种表示法。试试那个(未经测试的)解决方案:

updateWithMedian <- function(df, colname)
{
  medianValue <- median(df[,colname], na.rm = T)
  df[is.na(df[,colname]), colname] <- medianValue
  return(df)
}

推荐阅读