简体   繁体   English

创建字典并用R替换短语中的拉丁词

[英]Create dictionary and replace by it latin words in phrases in R

Post similar with this Create dictionary and replace by it latin words in R . 发布与此“ 创建字典 ”类似的内容, 并用R替换拉丁词 The solution of Moody_Mudskipper is good, but let's examine this phrase Moody_Mudskipper的解决方案很好,但是让我们研究一下这句话

2049750 TESS чай солид     450mg

and so on... indeed i must get 等等...确实我必须得到

2049750 ТЕСС чай солид     450mg

but

output <- with(lapply(dict,as.character), new[match(tolower(input),old)])
output

after i get only NA. 在我只得到NA之后。 What's wrong? 怎么了?

 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

_my dictionary _我的字典

dict <- structure(list(
  old = structure(c(2L, 1L), .Label = c("mag", "tess"),class = "factor"),
  new = structure(c(2L, 1L), .Label = c("маг", "тесс"), class = "factor")),
  .Names = c("old", "new"), class = "data.frame", row.names = c(NA, -2L))

input 输入

input<-("2049750 TESS чай солид     450mg")

desired output 期望的输出

2049750 ТЕСС чай солид     450mg

now i get output 现在我得到输出

1.Na
2.Na
...
35000 NA

You can try this : 您可以尝试以下方法:

library(stringr)
dict2 <- setNames(toupper(as.character(dict$new)), 
                  paste0("\\b",toupper(dict$old),"\\b")) 
str_replace_all(input, dict2)
# [1] "2049750 ТЕСС чай солид     450mg"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM