Я пишу функцию в 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 принимать путь с символом ударения или создать каталог без специальных символов?
Спасибо всем.