在自定义函数 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
请注意,我们使用双括号符号来访问数据框列。 $
表示法不适用于包含字符串列名称的变量。
如果您要执行精确匹配,您可以使用 dplyr
的 recode
函数。当您将列名作为变量时,也不要使用 $
。
get_clean_party <- function(df, feature){
df[[feature]] <- dplyr::recode(df[[feature]], D = 'Democrat', R = 'Republican')
df
}
df <- get_clean_party(df, "col_name")
我希望在同一个 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
请注意,我们使用双括号符号来访问数据框列。 $
表示法不适用于包含字符串列名称的变量。
如果您要执行精确匹配,您可以使用 dplyr
的 recode
函数。当您将列名作为变量时,也不要使用 $
。
get_clean_party <- function(df, feature){
df[[feature]] <- dplyr::recode(df[[feature]], D = 'Democrat', R = 'Republican')
df
}
df <- get_clean_party(df, "col_name")