在R中编写"查找和替换"的通用函数

his*_*eim 0 r data-manipulation

我需要为"在R中查找和替换"编写一个通用函数.如何编写采用以下输入的函数

  • CSV文件(或数据框)
  • 要查找的字符串,例如"name@email.com"
  • 一个字符串替换找到的字符串,例如"medium"

并重写CSV文件/数据框,以便用替换字符串替换所有找到的字符串?

had*_*ley 8

这是一个快速完成工作的功能:

library(stringr)

replace_all <- function(df, pattern, replacement) {
  char <- vapply(df, function(x) is.factor(x) || is.character(x), logical(1))
  df[char] <- lapply(df[char], str_replace_all, pattern, replacement)  
  df
}

replace_all(iris, "setosa", "barbosa")
Run Code Online (Sandbox Code Playgroud)

基本上,它标识数据框中作为字符或因子的所有变量,然后应用于str_replace_all每列.模式应该是正则表达式,但如果要匹配固定字符串,则可以执行(例如)

replace_all(iris, fixed("setosa"), "barbosa")
Run Code Online (Sandbox Code Playgroud)