Sto eseguendo un progetto rStudio su Windows di un collega (lavoro su mac, quindi non sono nelle mie acque).Errore 43 durante la lavorazione di un contrassegno r in pdf su rStudio su Windows
Quando ho provato a compilare in pdf in un file .RMD ottengo questo errore:
"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
ho lasciato i percorsi completi perché ho notato qualcosa di strano nel percorso dell'utente. Le stampe di log questo frammento:
`C:/Users/LUCILL'.
<to be read again>
\protect
<*> C:/Users/LUCILL~
1.RAV
dove il nome utente è diverso da come dovrebbe essere (lucilla.rava).
Su mac la compilazione non dà errori, quindi il problema non dovrebbe essere nel codice.
Nota: ho creato il progetto sul mio Mac in una cartella condivisa tramite Google Drive.
AGGIORNAMENTO 1: Grazie a @Gnusper abbiamo notato che c'è un errore di separatore di percorso. I percorsi Unix e Windows sono misti. Ho bisogno di un modo per rimuovere la miscelazione.
Nel mio codice ho definito i percorsi con il seguente codice:
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))))
}
ho fatto qualche test con un nuovo progetto di ricerca sulla macchina Windows con questi risultati:
> file.path('affs', '0sdfsdf')
[1] "affs/0sdfsdf"
> .Platform$file.sep
[1] "/"
>
Il percorso il separatore è ancora simile a Unix. Leggendo l'aiuto di file.path ho trovato questo:
file.path(..., fsep = .Platform$file.sep)
[...]
Note
The components are by default separated by/(not) on Windows.
Per qualche ragione la funzione implementa il separatore Unix anche su Windows ... Ho cercato quindi di correre .Platform $ file.sep < - '\\ '. Ma quando uso file.path() ho ancora il separatore '/'. Quindi fsep = .Platform $ file.sep negli argomenti non viene valutato ogni volta che viene eseguita la funzione.
Nel nuovo progetto ho fatto altri esami:
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')
tutti loro lavorare e creare il file. Ho anche provato dir.create() con varie combinazioni di separatori e tutte funzionano. Sembra che R capisca cosa fare quando si gestiscono i file e si correggono i separatori.
Ma poiché la compilazione del file .rmd viene eseguita da pandoc tramite un comando shell, il mix di separatori non viene risolto e l'errore si verifica.
trovo pensiero molto strano che nel log degli errori, Pandoc viene chiamato con un percorso Unix
C:/Program Files/RStudio/bin/pandoc/pandoc
Come è Pandoc in grado di eseguire e sollevare l'errore ??
Riassumendo Ho bisogno del mio codice per funzionare su entrambe le piattaforme.
UPDATE 2: Ho provato a rimuovere spazi bianchi da tutti i percorsi del mio codice. Inoltre, ho provato a spostare gli script e il file rmd in un nuovo progetto nella cartella locale, per verificare i problemi introdotti dall'avere un progetto condiviso su GoogleDrive. Nessun miglioramento.
AGGIORNAMENTO 3: Ho inviato il problema come problema su https://github.com/rstudio/rmarkdown. Ho implementato il suggerimento che mi è stato fornito (creare l'output prima nella stessa cartella del progetto e quindi spostarlo nella cartella di destinazione effettiva) ma senza fortuna. tuttavia sono abbastanza sicuro ora che il problema è nella creazione e nel recupero dei file temporanei.
Se corro tempdir() in Windows restituisce:
tempdir()
[1] "C:\\Users\\LUCILL~1.RAV\\AppData\\Local\\Temp\\RtmpUrsOgH"
con lo strano nome utente accorciare che è riportato anche nel log degli errori.
se corro:
ottengo il percorso corretto.
UPDATE 4: Se può essere utile: ho bisogno di impostare il percorso per pdftext ogni volta che apro il progetto R.
In un file .Rprofile dichiaro:
Sys.setenv(PATH = paste(Sys.getenv("PATH"), "C:\\Program Files\\MiKTeX 2.9\\miktex\\bin\\x64", sep = .Platform$path.sep))
UPDATE 5: Strano come sembra, ci siamo trasferiti in un nuovo computer Windows, e il lavoro a maglia questa volta lavorato. Non ho idea del perché ... Ciononostante se qualcuno ha ancora qualche idea sul perché sarebbe apprezzato, dal momento che l'altro computer è la workstation principale del mio collega.
Come detto prima, il problema non è stato risolto. Ho postato il problema come problemi sul github di markdown. Vediamo se riescono a trovare una soluzione. https://github.com/rstudio/rmarkdown/issues/574 – Bakaburg