目录路径中带有重音字符时如何使用knitr?

时间:2018-09-02 18:10:27

标签: r path knitr non-ascii-characters

我正在R中编写一个函数,该函数允许为R内存中的任何列表生成html报告。该功能依赖于编织器。 该功能在此处可用: the ez.html function 该功能运行良好,除非工作目录的路径包含特殊字符(例如带重音符号的字符)。 换句话说,如果path为:

C:\ Users \ Nicolas

一切正常。但是,如果path是:

C:\ Users \Véro

knitr无法更改目录。 我发现knitr的作者强烈要求not to use special character in the path。但是,由于我想共享该功能,所以我不能确保其他人不会使用非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:\ Users \Véro

该功能失败,因为创建时需要管理员权限 C:\ Users \ easieR.res

是否有人想让knitr接受带有重音符号的路径或创建没有特殊字符的目录?

谢谢。

0 个答案:

没有答案