创建字典并用R替换短语中的拉丁词 [英] Create dictionary and replace by it latin words in phrases in R

查看:64
本文介绍了创建字典并用R替换短语中的拉丁词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

与此
类似的帖子创建字典,并用它替换R 中的拉丁词。
Moody_Mudskipper的解决方案很好,但是
让我们研究一下这个短语

Post similar with this Create dictionary and replace by it latin words in R. The solution of Moody_Mudskipper is good, but let's examine this phrase

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

依此类推...
实际上我必须得到

and so on... indeed i must get

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

但是

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

我只得到NA后。
怎么了?

after i get only 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

_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获取输出



now i get output

1.Na
2.Na
...
35000 NA


推荐答案

您可以尝试以下方法:

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

这篇关于创建字典并用R替换短语中的拉丁词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆