我得到了一个data.table库,在这个data.table中有一个term列
class(base$term)
[1] character
length(base$term)
[1] 27486
我可以从一个字符串中去掉重音符号。我可以从一个字符串向量中去掉重音符号。
iconv("Millésime",to="ASCII//TRANSLIT")
[1] "Millesime"
iconv(c("Millésime","boulangère"),to="ASCII//TRANSLIT")
[1] "Millesime" "boulangere"
但是由于某些原因,当我在term列上应用相同的函数时,它不起作用
base$terme[2]
[1] "Millésime"
iconv(base$terme[2],to="ASCII//TRANSLIT")
[1] "MillACsime"
有人知道这是怎么回事吗?
7条答案
按热度按时间zkure5ic1#
使用stringi包可能更容易。这样,您就不需要事先检查编码。此外,stringi在操作系统之间是一致的,而
iconv
则不是。tjvv9vkg2#
解决问题的方法:
感谢@nicola
brtdzjyr3#
下面是Jeldrik为DataFrames修改的解决方案版本。注意,
:=
运算符在R基中被弃用。z8dt9xmd4#
您可以应用此功能
nkkqxpd95#
三种去除重音符号的方法-如下所示并相互比较。
要使用的数据:
基准化:
结果:
结论:
base::iconv()
是最快和首选的方法。在法语单词上测试过。没有在其他语言上测试过。svdrlsy46#
基于jf2017代码,这里是一个tidyverse解决方案:
要应用于数据框中的所有列,请使用
运行
stringi::stri_trans_list()
以查看id可以采用的所有可用参数dced5bon7#
快速,简单,易于修改,无依赖性: