r - 目录路径中有重音字符时如何使用knitr?
问题描述
我正在 R 中编写一个函数,该函数允许为 R 内存中的任何列表生成 html 报告。该功能依赖于knitr。该函数在此处可用: ez.html 函数 该函数运行良好,除非工作目录的路径包含特殊字符(例如,重音字符)。换句话说,如果路径是:
C:\用户\尼古拉斯
一切都好。但是,如果路径是:
C:\用户\Véro
knitr 无法更改目录。我发现 knitr 的作者敦促不要在路径中使用特殊字符。但是,由于我想共享该功能,我不能确保其他人不使用非 ascii 字符。我试图通过测试路径是否包含非 ascii 字符并在至少有一个 ascii 字符时创建一个新目录来避免该问题。
wd<-getwd()
if(grepl("[^[:alnum:]]", wd)) {
wd.decomp<-str_split(wd, "/")
special.chr<-grepl("[^[:alnum:]]",unlist(wd.decomp) )
special.chr<-which(special.chr)[2]
special.chr<-special.chr-1
wd.decomp<-unlist(wd.decomp)
new.wd<-wd.decomp[1:special.chr]
new.wd.<-str_flatten(new.wd, "/")
new.wd.<-paste0(new.wd., "/res.easieR")
dir.create( new.wd., showWarnings = FALSE)
test<-try(setwd(new.wd.))
if(class(test)== "try-error"){
new.wd.<-str_flatten(new.wd, '\\')
new.wd.<-paste0(new.wd., "\\res.easieR")
dir.create( new.wd., showWarnings = FALSE)
setwd( new.wd.)
}
再一次,这个代码块运行良好,除非您需要管理员权限来创建目录。
因此,如果路径是 C:\Users\Nicolas\ça.a.marché 该函数将创建以下目录:
C:\Users\Nicolas\easieR.res
然而,对于
C:\用户\Véro
该函数失败,因为创建 C:\Users\easieR.res 需要管理员权限
有没有人有想法让 knitr 接受带有重音字符的路径或创建一个没有特殊字符的目录?
谢谢大家。
解决方案
推荐阅读
- android - 清单合并失败,项目中有多个错误
- python - 使用fuzzywuzzy在python中的单个大df中查找相似的名称
- python - for循环内的字典不会转移到for循环外 - Python
- java - 来自用户输入的数组方法
- node.js - lambda函数node.js http请求无法查看响应
- java - 关闭 RMI 服务器时的问题
- php - 如果用户已登录并且登录页面重定向到用户配置文件,如何使 $user 对象在其他页面上工作
- javascript - 如何使用 JavaScript 重定向到带有变量或数据或值的控制器?
- javascript - 在附加()元素之后的VueJS中,点击方法不起作用
- kotlin - Kotlin 语法:使用类名而不是伴随对象名的区别