Как использовать knitr, если в пути к каталогу есть акцентированные символы? - PullRequest
0 голосов
/ 02 сентября 2018

Я пишу функцию в R, которая позволяет создавать html-отчет для любого списка в R памяти. Функция опирается на Knitr. Функция доступна здесь: функция ez.html Функция работает довольно хорошо, за исключением случаев, когда путь к рабочему каталогу содержит специальные символы (например, акцентированные символы). Другими словами, если путь:

C: \ Users \ Nicolas

все в порядке. Тем не менее, если путь:

C: \ Users \ Веро

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: \ Users \ Веро

Функция завершается ошибкой, потому что права администратора необходимы для создания C: \ Users \ easieR.res

У кого-нибудь есть идея, чтобы заставить knitr принимать путь с символом ударения или создать каталог без специальных символов?

Спасибо всем.

...