Flextable do pacote RMarkdown falha imediatamente com “read_docx only support docx”

Aug 29 2020

Sinto muito por uma questão minimamente produzida ... sem muitas informações, porque simplesmente falha na primeira vez que tento fazer isso e ainda não sou muito hábil na depuração de RMarkdown.

Estou tentando flextable pela primeira vez (interessado em controlar a saída da tabela em HTML e Word).

Flextable instalado e executado para HTML, mas interrompe qualquer renderização para o Word. Quando tento tricotar no Word, antes de obter um novo arquivo do Word, ele para com um erro no painel RMarkdown, sendo:


Line [first line of R-chunk]: Error: read_docx only support docx files Execution halted  

Alguém viu e resolveu isso antes? Há apenas uma pergunta de SO potencialmente relacionada a isso aqui , mas nenhuma resposta ainda :(


EDIT - Achei algo, mas ainda é um problema :-p
pensei em mais uma coisa que é "custom" ... Já tenho meu próprio reference_docx.
Quando eu tirei isso para que o modelo padrão do Word fosse usado ... ele roda !!
Mas eu definitivamente quero meus estilos !! flextable não é a única coisa que posso usar :-D.
Alguém sabe sobre alguma restrição no reference_docx para flextable?
Ou podemos adivinhar que as restrições são realmente para o oficial?
Eles podem ser superados?

Não vou me preocupar em descartar os cabeçalhos porque você não tem meu arquivo de qualquer maneira. Mas certamente é o formato mais recente do Word, pois tenho o Office 365 e dificilmente posso parar as atualizações do Windows se eu quiser.
Vou tentar descompactar o docx sozinho e verificar se há alguma diferença nos metadados do docx e o padrão como visto em um Knit usando o padrão.

EDIT / UPDATE 2 - falhou ao hackear o arquivo, e ... talvez não importe Então eu passei pela transformação zip para fazer do meu reference_docx preferido uma pasta e o docx de saída feito com "default" em uma pasta. Eu verifiquei com beyondCompare e talvez a maior diferença é que há informações para notas de fim em meu preferido.
Eu uso o Zotero, então desinstalei o Zotero do Word, salvei novamente e nenhuma alteração.
Tentei remover todas as notas finais do documento e salvei novamente, sem alterações.
Tentei editar a pasta bruta para remover um arquivo "endnotes.xml", compactuei-o novamente, tentei abrir no Word, deixe-o reparar, salvei novamente. . . nenhuma mudança.
Além disso, tentei remover uma entrada em um xml de nível superior relacionado a "notas de fim" e também compactar novamente e abrir e reparar e salvar novamente ... sem alterações.

Então eu aceitei que talvez eu só tivesse que reconstruir meus estilos de doc de referência preferidos e tentei usar o docx de saída do pandoc "default" para começar de novo. E eu pensei em apenas usar isso como o reference_docx primeiro, apenas para ter certeza de que funciona. . . . . .
isso não . :(

  • Assim, podemos ver que há algo sobre os arquivos docx na minha caixa que o freetable ou officer simplesmente não aceita como docx de referência.

Provavelmente terei que falar com eles.
Enquanto isso, posso ver se há um arquivo doc real usado como "padrão" e talvez ainda consiga fazer as coisas andarem.


Estou executando o RStudio 1.3.1073 no Windows 10.
O código simples que estou executando é:

``` {r}

library(dplyr)
library(flextable)

myDF = mtcars 


myDF[1:10,] %>%
      flextable()


```

executando sessionInfo () produz:

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 
> 

apenas para confirmar ~~~ apenas para deixar claro que eu já o isolei usando flextable () - ou potencialmente magrittr, mas isso parece menos relacionado - isso é bom:

``` {r }


library(dplyr)
library(flextable)


myDF = datasets::mtcars 


myDF[1:10,] 
  # %>%
  #     flextable()


```  

Estou usando o RMarkdown por algumas semanas e gerando docx anteriormente.
Ainda posso gerar docx se não usar flextable, incluindo esse despejo de dados mínimo com apenas a seleção de 10 linhas como acima sem flextable.
Quando eu incorporo flextable, temos um problema estranho.

E só para ser mais claro , tirando o magrittr, ainda obtenho o mesmo comportamento ... HTML está ok, o Word obtém o erro conforme declarado:

``` {r }


library(dplyr)
library(flextable)


myDF = datasets::mtcars 


flextable(myDF[1:10,])


  # %>%
  #     flextable()


```

E para responder a outra pergunta,
sim, já tentei atualizar todos os pacotes e verificar se há atualizações do RStudio

Respostas

3 MikeM Aug 29 2020 at 22:00

omg - é porque o caminho do arquivo para o meu reference_docx tem espaços (talvez outros caracteres também)

Eu não verifiquei outros caracteres especiais ainda, então podem ser outros caracteres, mas com certeza o espaço é suficiente para quebrá-lo.

Meu caminho de arquivo original era (parcialmente editado com itens do mesmo comprimento para letras e números)

C:\Zzzzz\yyyy\XxxXxxxx\--------1111,1111 aaaaaaa bbbb cccc\ddd e.f. !\_-_ ggggg hhhhh iiii jjjjjjj kkkkk\R source\_outputTemplates\  

Tentei ser bem curto e também simples de ver se isso por acaso é o problema, porque ainda não tinha tentado e fico pensando ... sabemos que é um problema local, então deve ser algo assim.

Então eu saltei para

C:\Zzzzz\yyyy\Qqqqqq\  
  • e funciona!

Então, para depurar o tipo de caractere que é um problema, fiz uma pasta para brincar e comecei com espaços ...

C:\Zzzzz\yyyy\Qqqqqq\a folder with spaces\  

==> ERR!

Mudando para o mesmo comprimento, mas sem espaços ...

C:\Zzzzz\yyyy\Qqqqqq\aFolderWithNooSpaces\  

==> ok :) !!!

Eu posso verificar se há outros caracteres especiais, mas isso já é mais do que depuração suficiente, eu acho ;-)
Tenho certeza que o desenvolvedor pode cuidar disso daqui. O github diz que eles seguem a tag.

YannikSuhre Aug 29 2020 at 19:31

Eu apenas experimentei seu exemplo e mudei uma ou duas coisas. Vou postar meu código embaixo. No entanto, esteja ciente de que o pacote que você quis dizer não é dbplyrmas dplyr. O primeiro é para bancos de dados, o último para extrair, transformar e carregar. Aqui está o código:

library(dplyr)
library(flextable)
library(datasets)

data(iris)

iris[1:10,] %>%
      flextable()

Com esse código, ele combina perfeitamente com o word ( .docx) na minha máquina.