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

问题描述 投票:0回答:3

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

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

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

r if-statement str-replace
3个回答
1
投票

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

name.french <- c("framboise", "not framboise")
name.english <- c("rasperry", "rasperry")


name.english2 <-
  ifelse(
    name.french == "framboise",
    str_replace(name.english, "rasperry", "rasberry"),
    name.english
  )

如果您的数据存储在tibbledata.frame中并且您想使用tidyverse动词,这也可以使用:

library(tidyverse)

d <- tibble(name.french = c("framboise", "not framboise"),
            name.english = c("rasperry", "rasperry"))

d2 <- d %>%
  mutate(name.english = ifelse(
    name.french == "framboise",
    str_replace(name.english, "rasperry", "rasberry"),
    name.english
  ))

d
#> # A tibble: 2 x 2
#>   name.french   name.english
#>   <chr>         <chr>       
#> 1 framboise     rasperry    
#> 2 not framboise rasperry

d2
#> # A tibble: 2 x 2
#>   name.french   name.english
#>   <chr>         <chr>       
#> 1 framboise     rasberry    
#> 2 not framboise rasperry

reprex package(v0.3.0)在2020-03-03创建


1
投票

使用ifelse。假设您的data.frame称为df,并且您想对name.english列进行更改:

df$name.english = ifelse(name.french == 'framboise', str_replace(name.english, "rasperry", "rasberry"), df$name.english)

0
投票

关于旧的gsub(...),即假设数据regex的基于df的解决方案,情况如何?

df[df[["name.french"]] == "framboise", "name.english"] <- gsub( pattern = "rasperry", replacement = "rasberry", x = df[df[[name.french == "framboise"]], "name.english"] ) 

当然,您可以轻松地将其构建到一个简单的函数中,此处的列名称:“ name.french”,此处的行过滤条件:“ framboise”,并且模式和替换字符串可以作为参数传递给。如果您只想在所有name.english中将“ rasperry”替换为“ rasberry”,则可以在df中删除行过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.