如何在r中使用if语句和str_replace替换一个单词

如何在r中使用if语句和str_replace替换一个单词,r,if-statement,str-replace,R,If Statement,Str Replace,我使用的数据集包含一些错误翻译的字符串。一列显示原始语言name.french中的单词。在下一栏中列出了他们的翻译名为name.english。现在,我想使用以下命令将错误的翻译替换为正确的翻译: if(name.french == "framboise"){name.english = str_replace(name.english, "rasperry", "rasberry");} 但是,我总是收到以下错误消息:参数不能解释为逻辑值。是否有其他方法来替换某些错误的翻译?如果您的数据存储

我使用的数据集包含一些错误翻译的字符串。一列显示原始语言name.french中的单词。在下一栏中列出了他们的翻译名为name.english。现在,我想使用以下命令将错误的翻译替换为正确的翻译:

if(name.french == "framboise"){name.english = str_replace(name.english, "rasperry", "rasberry");}

但是,我总是收到以下错误消息:参数不能解释为逻辑值。是否有其他方法来替换某些错误的翻译?

如果您的数据存储在两个单独的向量中,您可以使用ifelse:

由v0.3.0于2020年3月3日创建,使用ifelse。假设您的data.frame名为df,并且您希望更改name.english列:

df$name.english = ifelse(name.french == 'framboise', str_replace(name.english, "rasperry", "rasberry"), df$name.english)
好老的gsub怎么样。。。ie是一个基于regex的解决方案,用于假设的data.frame df

Of cource u可以轻松地将其构建到一个简单的函数中,其中这里的列名:name.french,这里的行筛选条件:framboise,以及模式和替换字符串可以作为参数传递给。如果您只想在name.english的所有版本中将rasperry全局替换为rasberry,那么您可以删除df中的行过滤器,即df[[name.french]]==framboise。。。代码的一部分

请提出问题。用ifelse试试,它是为这类事情而设计的矢量化工具——也许是name.english
df$name.english = ifelse(name.french == 'framboise', str_replace(name.english, "rasperry", "rasberry"), df$name.english)
df[df[["name.french"]] == "framboise", "name.english"] <- gsub( pattern = "rasperry", replacement = "rasberry", x = df[df[[name.french == "framboise"]], "name.english"] )