编写接受旧字符串、搜索数据框列并替换为新字符串的用户定义函数
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")
注意:如果您的字符串存储为因子,这将不起作用
我有一个包含列 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")
注意:如果您的字符串存储为因子,这将不起作用