如何在R中修改dataframe指定列变量的字符串编码
解决方案
核心原因
你遇到的现象本质是R给data.frame字符串列自动标记了未知编码,导致iconv执行时未做实际转换;直接传入字符串常量时R默认识别为UTF-8编码,因此可以转换成功。
可用解决方法
方法1:先强制指定编码再转换
# 先给title列的所有字符串标记原始编码为UTF-8 Encoding(df$title) <- "UTF-8" # 再执行编码转换 df$title <- iconv(df$title, from = "UTF-8", to = "latin1")
方法2:使用stringi包做更稳定的编码转换
如果方法1未生效,可以使用兼容性更强的stringi包处理:
# 未安装包先执行 install.packages("stringi") library(stringi) df$title <- stri_encode(df$title, from = "UTF-8", to = "latin1")
源头优化方案
如果乱码是从数据读取环节产生的,建议在读入数据时就指定编码,比如读csv时添加参数:
df <- read.csv("你的文件路径.csv", encoding = "UTF-8")
内容的提问来源于stack exchange,提问作者Duck
相关产品推荐
相关产品推荐

