在自定义函数 R 中传入 df 和 column

Pass in df and column in custom function R

我希望在同一个 df 上应用多个 gsub 调用。所以,我想创建一个函数,但似乎没有用。这是我得到的:

get_clean_party <- function(df, feature){
  df$feature <- gsub("D","Democrat", df$feature)
  df$feature <- gsub("R","Republican", df$feature)
}

有什么建议吗?

如果您将列名作为 string 传递,这将起作用:

get_clean_party <- function(df, feature) {
    df[[feature]] <- gsub("D", "Democrat",   df[[feature]])
    df[[feature]] <- gsub("R", "Republican", df[[feature]])
    return(df)
}

数据与使用:

df <- data.frame(v1=c("R", "D", "R", "D"), stringsAsFactors=FALSE)
df <- get_clean_party(df, "v1")
df

          v1
1 Republican
2   Democrat
3 Republican
4   Democrat

请注意,我们使用双括号符号来访问数据框列。 $ 表示法不适用于包含字符串列名称的变量。

如果您要执行精确匹配,您可以使用 dplyrrecode 函数。当您将列名作为变量时,也不要使用 $

get_clean_party <- function(df, feature){
  df[[feature]] <- dplyr::recode(df[[feature]], D = 'Democrat', R = 'Republican')
  df
}
df <- get_clean_party(df, "col_name")