求助:解决haven包read_sav()读取含特殊字符文件路径的方法
解决haven::read_sav()读取含特殊字符路径文件的问题
我之前也碰到过这个问题——用haven 1.1.1版本的read_sav()函数时,只要SPSS文件的路径(包括文件名)里有特殊字符(比如ó、ä、æ这类),就会读取失败。你目前用的复制文件到无特殊字符路径并重命名的方法确实可行,但步骤有点繁琐,这里分享两个更简洁的绕过方案:
方案1:用临时文件自动处理(跨平台友好)
利用R内置的tempfile()函数创建临时文件,系统会自动生成无特殊字符的临时路径,全程不需要手动修改文件名或路径,代码更简洁还能自动清理:
# 定义原文件的路径 original_file <- "./äglæpath/randóóm.sav" # 创建一个带.sav后缀的临时文件路径 temp_file <- tempfile(fileext = ".sav") # 把原文件复制到临时路径 file.copy(original_file, temp_file) # 读取临时文件 spss_data <- haven::read_sav(temp_file) # 可选:读取完成后删除临时文件,避免占用空间 file.remove(temp_file)
方案2:转换路径编码(仅Windows环境适用)
在你的Windows环境下(R 3.5.0 + 64位系统),可以尝试把UTF-8编码的路径转换成系统本地编码(比如GBK),因为haven早期版本在Windows上对UTF-8路径的支持有缺陷:
# 把路径转换为系统本地编码 local_encoded_path <- enc2native("./äglæpath/randóóm.sav") # 直接读取转换后的路径 spss_data <- haven::read_sav(local_encoded_path)
这个方法不需要复制文件,是最简洁的方案,不过只适用于Windows系统,你可以在自己的环境里测试一下是否生效。
你的当前运行环境:
R version 3.5.0 (2018-04-23) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows >= 8 x64 (build 9200)
内容的提问来源于stack exchange,提问作者s_baldur
相关产品推荐
相关产品推荐

