编写接受旧字符串、搜索数据框列并替换为新字符串的用户定义函数

Writing a user-defined function that accepts an oldstring, searches a dataframe column, and replaces with a newstring

我有一个包含列 kw 的数据集 blah。有数万个字符串,其中一些是句子长度。我已经用 for 循环替换了我想要替换的绝大多数内容,将子字符串替换为子字符串类别。但是,我不可能想到所有需要替换的子字符串——虽然大部分繁重的工作已经完成,但还有很多边缘情况,我想在它们出现时处理它们。

我想创建一个函数 cleanup,我可以在其中传递一个旧子字符串和一个新子字符串,该函数将用新子字符串替换 blah$kw 中的旧子字符串实例。

以下是我到目前为止所写的内容:

cleanup <- function(oldstring, 
                    newstring) {
           blah$kw[grepl(oldstring, 
                         blah$kw)] <- sapply(blah$kw[grepl(oldstring, 
                                                           blah$kw)],
                                             function(x) gsub(oldstring,
                                                              newstring, 
                                                              x))
}

这可能看起来很愚蠢,我不知道——我是 R 的新手。但我是基于我找到的一次性代码,它在这里:

blah$kw[grepl(oldstring, 
              blah$kw)] <- sapply(blah$kw[grepl("oldstring", 
                                                 blah$kw)],
                                  function(x) gsub("oldstring",
                                                   "newstring", 
                                                   x))
}

这就像一个魅力。无论如何,任何帮助都是巨大的。谢谢!

通常最好不要将数据集硬编码到函数并将其作为变量传递。你要找的东西可以通过子集

来完成
cleanup <- function(df1, oldstring, newstring) {
  df1[grepl(oldstring, df1)] <- gsub(oldstring, newstring, df1[grepl(oldstring, df1)])
  df1
}

blah$bw <- cleanup(blah$bw, "a", "y")

注意:如果您的字符串存储为因子,这将不起作用