首页 > 解决方案 > 目录路径中有重音字符时如何使用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 接受带有重音字符的路径或创建一个没有特殊字符的目录?

谢谢大家。

标签: rpathknitrnon-ascii-characters

解决方案


推荐阅读