2015-12-03 2 views
12

Я запускаю проект rStudio на Windows коллеги (я работаю на Mac, поэтому я не в моих водах).Ошибка 43, в то время как вязание r уценки в pdf на rStudio в Windows

Когда я попытался собрать в PDF-файл в .rmd я получаю эту ошибку:

"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS Plot_per_DPUO.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash-implicit_figures --output "Grafici Professioni/Periodo apr-14 ott-15 test/DH ALLERGOLOGIA - SAN PAOLO.pdf" --template "C:\Users\lucilla.rava\Documents\R\win-library\3.1\rmarkdown\rmd\latex\default.tex" --highlight-style tango --latex-engine pdflatex --variable "geometry:margin=1in" 
pandoc.exe: Could not find image `Grafici%20Professioni\Periodo%20apr-14%20ott-15%20test\DH%20ALLERGOLOGIA%20-%20SAN%20PAOLO_files/figure-latex/set-options-1.pdf', skipping... 
pandoc.exe: Error producing PDF from TeX source. 
! I can't find file `C:/Users/LUCILL'. 
<to be read again> 
        \protect 
<*> C:/Users/LUCILL~ 
        1.RAV/AppData/Local/Temp/tex2pdf.3172/input.tex 
Please type another input file name 
! Emergency stop. 
<to be read again> 
        \protect 
<*> C:/Users/LUCILL~ 
        1.RAV/AppData/Local/Temp/tex2pdf.3172/input.tex 
! ==> Fatal error occurred, no output PDF file produced! 
Transcript written on C:/Users/LUCILL~1.RAV/AppData/Local/Temp/tex2pdf.3172/tex 
put.log. 

Show Traceback 

Rerun with Debug 
Error: pandoc document conversion failed with error 43 

я оставил полные пути, потому что я заметил что-то странное в пути пользователя. Бревенчатые печатает этот фрагмент:

`C:/Users/LUCILL'. 
    <to be read again> 
         \protect 
    <*> C:/Users/LUCILL~ 
         1.RAV 

где имя пользователя отличается от того, как это должно быть (lucilla.rava).

На mac компиляция не дает ошибок, поэтому проблема не должна быть в коде.

Примечание: Я создал проект на своем Mac в папке, совместно используемой с помощью Google Drive.

ОБНОВЛЕНИЕ 1: Благодаря @Gnusper мы заметили, что существует ошибка разделителя пути. Пути Unix и Windows являются смешанными. Мне нужен способ удалить микширование.

В моем коде я определил пути со следующим кодом:

months.vec <- get.months(unique(Data$Periodo)) 
    months.vec <- format(months.vec, '%b-%y') 

    if (type == 1) folder.name <- 'Grafici Generali' 
    else if (type == 2) folder.name <- 'Grafici Professioni' 
    else if (type == 3) folder.name <- 'Grafici Indicazioni' 

    folder.path <- file.path(folder.name, sprintf('Periodo %s %s%s', months.vec[1], tail(months.vec, 1), test)) 

    dir.create(folder.path, recursive = T, showWarnings = F) 

    for (UO in unique(Data$UO)[1:5]) { 
     print(file.path(folder.path, sprintf('%s.pdf', sub(pattern = "/", replacement = ' ', UO, fixed = T)))) 
     render('Plot per DPUO.Rmd', clean = T, output_file = file.path(folder.path, sprintf('%s.pdf', sub(pattern = "/", replacement = ' ', UO, fixed = T)))) 
    } 

Я сделал некоторые испытания с новым R проекта на машине окна с этими результатами:

> file.path('affs', '0sdfsdf') 
[1] "affs/0sdfsdf" 
> .Platform$file.sep 
[1] "/" 
> 

Путь разделитель по-прежнему является Unix. Читая помощь file.path я нашел это:

file.path(..., fsep = .Platform$file.sep)

[...]

Note

The components are by default separated by/(not) on Windows.

По какой-то причине функция реализует разделитель Unix также на окнах ... я пытался затем запустить .Platform $ file.sep < - «\\ ». Но когда я использую file.path(), я все равно получаю разделитель '/'. Итак, fsep = .Platform $ file.sep в аргументах, которые он не оценивает каждый раз при запуске функции.

В новом проекте я сделал несколько тестов:

dir.create(file.path('ssdg','fgsfdg'), recursive = T, showWarnings = F) 
write(c(1,2,3,4,5), file = 'ssdg/fgsfdg/test.txt') 
write(c(1,2,3,4,5), file = 'ssdg\\fgsfdg\\test2.txt') 
write(c(1,2,3,4,5), file = 'ssdg/fgsfdg\\test3.txt') 

все они работают и создают файл. Я также попробовал dir.create() с различными комбинациями разделителей, и все они работают. Похоже, что R понимает, что делать при управлении файлами и исправлять разделители.

Но поскольку компиляция файла .rmd выполняется pandoc через команду оболочки, соединение разделителей не является фиксированным и возникает ошибка.

Я нахожу очень нечетное мысль, что в журнале ошибок, pandoc вызывается с пути Unix

C:/Program Files/RStudio/bin/pandoc/pandoc

Как pandoc возможность запускать и поднять ошибку ??

Подведение итогов. Мне нужен мой код для работы на обеих платформах.

ОБНОВЛЕНИЕ 2: Я попытался удалить пробелы со всех путей в моем коде. Также я попытался переместить скрипты и rmd-файл в новый проект в локальной папке, чтобы проверить проблемы, возникшие благодаря совместному проекту в GoogleDrive. Никаких улучшений.

ОБНОВЛЕНИЕ 3: Я разместил проблему как проблему на https://github.com/rstudio/rmarkdown. Я внедрил предложенное мной предложение (создав вывод сначала в той же папке, что и проект, а затем переместил его в фактическую папку назначения), но не повезло. однако теперь я уверен, что проблема заключается в создании и извлечении временных файлов.

Если я бегу TEMPDIR() на окнах возвращается:

tempdir() 
[1] "C:\\Users\\LUCILL~1.RAV\\AppData\\Local\\Temp\\RtmpUrsOgH" 

со странным сокращенным именем пользователя, который также сообщается в журнале ошибок.

Если я бегу:

Я получаю правильный путь.

UPDATE 4: Если это может быть полезно: мне нужно настроить путь для pdftext каждый раз, когда я открываю проект R.

В файле .Rprofile Заявляю:

Sys.setenv(PATH = paste(Sys.getenv("PATH"), "C:\\Program Files\\MiKTeX 2.9\\miktex\\bin\\x64", sep = .Platform$path.sep)) 

UPDATE 5: Странно, как это кажется, мы переехали на новый компьютер Windows, и вязание на этот раз работал. Не знаю, почему ... Тем не менее, если у кого-то еще есть идея, почему это будет оценено, так как другой компьютер является основным рабочим местом моего коллеги.

+0

Как было сказано ранее, проблема не была решена. Я опубликовал проблему как проблему с github уценки. Посмотрим, смогут ли они найти решение. https://github.com/rstudio/rmarkdown/issues/574 – Bakaburg

ответ

8

Типичные проблемы с Windows. У вас есть «\» на вашем пути, вы должны заменить его «/»

"Grafici Professioni/Periodo apr-14 ott-15 test/DH ALLERGOLOGIA - SAN PAOLO.pdf" --template "C:\Users\lucilla.rava\Documents\R\win-library\3.1\rmarkdown\rmd\latex\default.tex 

в

"Grafici Professioni/Periodo apr-14 ott-15 test/DH ALLERGOLOGIA - SAN PAOLO.pdf" --template "C:/Users/lucilla.rava/Documents/R/win-library/3.1/rmarkdown/rmd/latex/default.tex 
+0

Я так и думал. Но эти команды генерируются пакетом R markdown, а не я! следует ли это делать автоматически? – Bakaburg

+0

Кстати, мне нужно, чтобы он работал над окнами, поэтому я должен делать наоборот: «C:/Program Files/RStudio/bin/pandoc/pandoc» -> «C: \ Program Files \ RStudio \ bin \ pandoc \ pandoc». Является ли команда туманной – Bakaburg

+0

Да, было бы хорошо, если бы это сработало автоматически, может быть, оно не работает, потому что проект изначально был сделан на Mac? Если это работает, пожалуйста, укажите мой ответ как «правильный», чтобы другие люди видели ваш вопрос в ответе, и ответ работает :) – Gnusper

3

Это определяет ОС и загружает его в одну сторону на Windows, и другой путь везде

if (Sys.info()['sysname'] == Windows) { 
      "Grafici Professioni/Periodo apr-14 ott-15 test/DH ALLERGOLOGIA - SAN PAOLO.pdf" --template "C:/Users/lucilla.rava/Documents/R/win-library/3.1/rmarkdown/rmd/latex/default.tex" 
      } else if (Sys.info()['sysname'] == Darwin){ 
      #Mac filepath 
      } else { 
      #Linux filepath 
      } 

@gnusper должны получить кредит для нахождения проблемы слэш

+0

Я не уверен, что проблема была слэш. чтение в Интернете, я обнаружил, что окна читают оба пути. В любом случае, как в вашем случае, так и в случае с @gnusper, ваши предложения не могут быть введены в действие, потому что, опять же, у меня нет контроля над вызовом pandoc !!! он управляется инфраструктурой уценки внутри страны! – Bakaburg

+0

Как я писал в своем обновлении, я тестировал, что мои пути не являются проблемой.Разделение создания выходных файлов на 2 этапа (генерация файла и переименование и перемещение в папку назначения) установило, что проблема находится на первом шаге, в котором указанные мной пути не используются. Кроме того, перепросмотр проблемы в совершенно новом проекте, создаваемом непосредственно в окнах, не помог решить проблему. – Bakaburg

 Смежные вопросы

  • Нет связанных вопросов^_^