Il pacchetto RMarkdown flextable fallisce immediatamente con "read_docx only support docx"
Mi dispiace per una domanda minimamente prodotta ... non molte informazioni perché fallisce la prima volta che provo con questo e non sono ancora molto esperto nel debug di RMarkdown.
Sto provando flextable per la prima volta (interessato a controllare l'output della tabella sia in HTML che in Word).
Flextable è installato e funziona per HTML, ma interrompe del tutto qualsiasi rendering in Word. Quando provo a lavorare a maglia in Word, prima di ottenere un nuovo file Word, si ferma con un errore nel pannello RMarkdown, essendo:
Line [first line of R-chunk]: Error: read_docx only support docx files Execution halted
Qualcuno l'ha visto e risolto prima? C'è solo una domanda SO potenzialmente correlata a questo qui , ma ancora nessuna risposta :(
EDIT - Ho trovato qualcosa, ma è ancora un problema :-p
Ho pensato ad un'altra cosa che è "custom" ... ho già il mio reference_docx.
Quando l'ho portato via in modo che venga utilizzato il modello Word predefinito ... funziona !!
Ma voglio decisamente i miei stili !! flextable non è l'unica cosa che posso eventualmente usare MrGreen.
Qualcuno conosce eventuali restrizioni su reference_docx per flextable?
O potremmo supporre che le restrizioni siano effettivamente per gli ufficiali?
Possono essere superati?
Non mi preoccuperò di scaricare le intestazioni perché comunque non hai il mio file. Ma certamente è il formato più recente di Word poiché ho Office 365 e non posso fermare gli aggiornamenti di Windows se lo desidero.
Proverò a decomprimere il docx da solo e controllare se ci sono differenze nei metadati del docx e di quello standard come si vede in un Knit usando il valore predefinito.
EDIT / UPDATE 2 - non è riuscito ad hackerare il file, e ..... forse non importa Quindi ho passato la trasformazione zip per rendere il mio reference_docx preferito una cartella e l'output docx creato con "default" in una cartella. Ho controllato con beyondCompare e forse la differenza più grande è che ci sono informazioni per le note di chiusura nella mia preferita.
Uso Zotero, quindi ho effettivamente disinstallato Zotero da Word, salvato nuovamente e nessuna modifica.
Ho provato a rimuovere tutte le note di chiusura dal documento e ho salvato di nuovo e nessuna modifica.
Ho provato a modificare la cartella raw per rimuovere un file "endnotes.xml", l'ho zippato di nuovo, ho provato ad aprirlo in Word, l'ho lasciato riparare e salvato di nuovo. . . nessun cambiamento.
Ho provato inoltre a rimuovere una voce in un XML di primo livello relativa alle "note di chiusura" e ho anche decompresso e aperto, riparato e salvato di nuovo ..... nessuna modifica.
Così ho accettato che forse dovevo semplicemente ricostruire i miei stili di documento di riferimento preferiti, e ho provato a usare l'output docx da pandoc "predefinito" per ricominciare. E ho pensato di usarlo prima come reference_docx solo per assicurarmi che funzioni. . . . . .
non è così . :(
- Quindi possiamo vedere che c'è qualcosa nei file docx sulla mia scatola che freetable o ufficiale semplicemente non accetterà come riferimento docx.
Probabilmente dovrò sollevarlo con loro.
Nel frattempo, posso vedere se esiste un file doc effettivo utilizzato per "predefinito" e forse posso ancora far funzionare le cose.
Sto eseguendo RStudio 1.3.1073 su Windows 10.
Il semplice codice che sto eseguendo è:
``` {r}
library(dplyr)
library(flextable)
myDF = mtcars
myDF[1:10,] %>%
flextable()
```
l'esecuzione di sessionInfo () produce:
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] rstudioapi_0.11 knitr_1.29 magrittr_1.5 tidyselect_1.1.0 munsell_0.5.0 colorspace_1.4-1 R6_2.4.1 rlang_0.4.7
[9] dplyr_1.0.2 tools_4.0.2 grid_4.0.2 gtable_0.3.0 xfun_0.16 tinytex_0.25 htmltools_0.5.0 ellipsis_0.3.1
[17] yaml_2.2.1 digest_0.6.25 tibble_3.0.3 lifecycle_0.2.0 crayon_1.3.4 purrr_0.3.4 ggplot2_3.3.2 vctrs_0.3.2
[25] glue_1.4.1 evaluate_0.14 rmarkdown_2.3 compiler_4.0.2 pillar_1.4.6 generics_0.0.2 scales_1.1.1 pkgconfig_2.0.3
>
solo per confermare ~~~ solo per essere chiaro che l'ho già isolato utilizzando flextable () - o potenzialmente magrittr, ma sembra meno correlato - va bene:
``` {r }
library(dplyr)
library(flextable)
myDF = datasets::mtcars
myDF[1:10,]
# %>%
# flextable()
```
Uso RMarkdown da un paio di settimane e ho generato docx in precedenza.
Posso ancora generare docx se non utilizzo flextable, incluso questo dump di dati minimo selezionando solo 10 righe come sopra senza flextable.
Quando incorporo il flextable abbiamo uno strano problema.
E solo per essere extra, più chiaro , eliminando magrittr ottengo ancora lo stesso comportamento ... HTML è ok, Word riceve un errore come affermato:
``` {r }
library(dplyr)
library(flextable)
myDF = datasets::mtcars
flextable(myDF[1:10,])
# %>%
# flextable()
```
E per rispondere a un'altra domanda,
sì, ho già provato ad aggiornare tutti i pacchetti e controllare gli aggiornamenti di RStudio
Risposte
omg - è perché il filepath per il mio reference_docx ha spazi (forse anche altri caratteri)
Non ho ancora verificato la presenza di altri caratteri speciali, quindi potrebbero esserci altri caratteri, ma di sicuro lo spazio è sufficiente per romperlo.
Il percorso del file originale era (parzialmente oscurato con elementi della stessa lunghezza per lettere e numeri)
C:\Zzzzz\yyyy\XxxXxxxx\--------1111,1111 aaaaaaa bbbb cccc\ddd e.f. !\_-_ ggggg hhhhh iiii jjjjjjj kkkkk\R source\_outputTemplates\
Ho provato a renderlo molto breve e anche semplice per vedere se questo per caso è il problema, perché non l'avevo ancora provato e continuo a pensare ... sappiamo che è un problema locale quindi deve essere qualcosa del genere.
Quindi ho saltato fino a
C:\Zzzzz\yyyy\Qqqqqq\
- e funziona!
Quindi, per eseguire il debug del tipo di carattere che rappresenta un problema, ho creato una cartella con cui giocare e ho iniziato con gli spazi ...
C:\Zzzzz\yyyy\Qqqqqq\a folder with spaces\
==> ERR!
Cambiando alla stessa lunghezza ma senza spazi ...
C:\Zzzzz\yyyy\Qqqqqq\aFolderWithNooSpaces\
==> ok :) !!!
Potrei controllare altri caratteri speciali, ma questo è già più che sufficiente per il debug, penso ;-)
Sono sicuro che lo sviluppatore può prenderlo da qui. Il GitHub dice che seguono il tag.
Ho appena provato il tuo esempio e ho cambiato una o due cose. Inserirò il mio codice sotto. Tuttavia, tieni presente che il pacchetto che intendevi non è dbplyrma dplyr. Il primo è per i database, il secondo per l'estrazione, la trasformazione e il caricamento. Ecco il codice:
library(dplyr)
library(flextable)
library(datasets)
data(iris)
iris[1:10,] %>%
flextable()
Con quel codice, si adatta perfettamente a word ( .docx) sulla mia macchina.