Hay una manera fácil de automatizar la conversión de un R dataframe de una bonita tabla de Word en formato APA para la publicación de manuscritos? Actualmente estoy haciendo esto por el ahorro de la tabla en un archivo csv, apertura que en excel, la copia de la tabla de excel a Word, y el formato, pero tengo la esperanza de que no sería una forma de automatizar el formato en R, por lo que cuando me convertirlo a Word, ya sería en formato APA, porque la Palabra chupa en automatización.

Básicamente, quiero seguir escribiendo el manuscrito en sí en la Palabra, mientras que haciendo mi análisis en R. Entonces reunir todos los resultados en R para una tabla (con manual modificables formato) por un guión y convertirlo a cualquier formato que yo podría simplemente copiar-pegar en Word (para que el formato contiene de hecho). Cuando es necesario modificar la tabla, yo haría los cambios en R y, a continuación, sólo tiene que ejecutar de nuevo el script, sin necesidad de hacer ningún cambio en Word.

No quiero aprender de Látex, porque todo el mundo en mi campo de los usos de la Palabra, con características como el seguimiento de los cambios, y puedo usar Zotero complemento para las citas, por lo que es más sencillo mantener la escritura independiente a partir de los análisis. También, soy un psicólogo, no un programador, así que aprender un montón de nuevas tecnologías sólo de esto es que probablemente no vale la pena el esfuerzo para mí. Normalmente con las nuevas tecnologías vienen nuevos problemas técnicos, y estoy tratando de hacer mi flujo de trabajo más rápido, pero no en el costo de la imprevisión (que puede hacer que sea más lento exactamente en el momento cuando yo no se lo puede permitir).

He encontrado una R+knitr+rmarkdown+complacer+pandoc solución «con tan poca carga como sea posible», pero parece ser bastante pesado todavía, porque yo no conozco a ninguna de esas tecnologías aparte de R. Y no estoy con ganas de empezar a aprender todo lo que, como parece ser el objetivo de hacer de la escritura y de toda la R a la final, mientras que yo me quiero separar de mi escritura y mi código – nunca necesito el código en mi forma de escribir, sólo el resultado de tablas. Además, basándose en los ejemplos, parece recuperar los valores directamente desde código R (por ejemplo, de summary() para crear una tabla descriptiva), mientras que necesito para poder jugar con mi tabla manualmente antes de su conversión, por ejemplo, escribir el título y las notas (como una nota específica de una célula, lo explica en la parte inferior). También encontré R2wd, pero parece ser un viejo intento para el mismo «todo el flujo de trabajo en R» problema como la solución anterior. Espada no parece estar trabajando más.

Alguna sugerencia?

  • usted puede utilizar el kable de knitr library(knitr) kable(mtcars, format = "html"), a continuación, pegarlo en word.
  • Recomendamos una biblioteca de preguntas son off-topic, así que voto a cerrar. Hay un montón de opciones. También puede buscar en cran.r-project.org/web/packages/rtf/index.html. Personalmente, en esta situación yo uso brew con xtable para generar una versión HTML y el uso de estilo de Word derivados de CSS con copiar y pegar.

3 Comentarios

  1. 7

    He tenido la misma necesidad, y he acabado usando el paquete htmlTable, que es bastante ‘rentable’. Esto crea una tabla HTML (en RStudio es creado en el «Visor» de windows en la parte inferior derecha de la que me acabo de marcar con el ratón copiar-pegar en Word. (Inicio marcado formulario de la parte inferior de la tabla y arrastre el ratón hacia arriba, de esa manera usted está seguro de incluir el principio del código HTML.) Word se encarga de estas tablas bastante bien. La sintaxis es bastante sencilla que involucran a la función htmlTable(), pero todavía es capaz de hacer algo más tablas complejas, tales como las filas agrupadas principal y secundaria, los encabezados de columna (es decir, los encabezados de columna que abarca más de una columna). Echa un vistazo a los ejemplos en la viñeta.

    Una nota de precaución: htmlTable no funcionará será uno de los factores variables, es decir, van a salir como los números enteros (de acuerdo a los niveles del factor). Para leer los datos utilizando stringsAsFactors = FALSE o convertir el uso de as.character().

    Incluyendo los ceros finales se puede hacer uso de la txtRound función. Ejemplo:

    mini_table <- data.frame(Name="A", x=runif(20), stringsAsFactors = FALSE)
    txt <- txtRound(mini_table, 2)

    No es totalmente sencillo para asignar el formato de soch como negrita o cursiva, pero se puede hacer mediante un ajuste de la tabla de contenido en el código HTML. Si por ejemplo quieres hacer una columna en negrita, se puede hacer como este (por favor, tenga en cuenta el uso de las comillas simples y dobles en el interior de paste0):

    library(plyr)
    mini_table <- data.frame(Name="A", x=runif(20), stringsAsFactors = FALSE)
    txt <- txtRound(mini_table, 2)
    txt$x <- aaply(txt$x, 1, function(x)
                   paste0("<span style='font-weight:bold'>", x, "</span")
                  )
    htmlTable(txt)

    De curso, que sería más fácil en la Palabra. Sin embargo, es más interesante para agregar formato a los números de acuerdo a algunos criterios. Por ejemplo, si queremos poner de relieve todos los valores de x que están a menos de 0.2 por la aplicación de negrita de la fuente, podemos modificar el código anterior de la siguiente manera:

    library(plyr)
    mini_table <- data.frame(Name="A", x=runif(20), stringsAsFactors = FALSE)
    txt <- txtRound(mini_table, 2)
    txt$x <- aaply(txt$x, 1, function(x) 
                   if (as.numeric(x)<0.2) { 
                      paste0("<span style='font-weight:bold'>", x, "</span>")
                   } else {
                      paste0("<span>", x, "</span>")
                   })
    htmlTable(txt)

    Si quieres, incluso más elegante énfasis, por ejemplo, puede reemplazar la fuente en negrita por el rojo color de fondo mediante el uso de span style='background-color: red' en el código anterior. Todos estos cambios se trasladan a la Palabra, al menos en mi ordenador (Windows 7).

    • Esta solución parece simple, suficiente para mi propósito, pero tengo un par de preguntas. En primer lugar, parece que cuando la impresión en el espectador, me pierden los ceros a la derecha (todavía son visibles cuando se imprime en la consola). ¿Sabes cómo evitar que eso suceda? Segundo, es posible que el formato de la tabla html más en R? Por ejemplo, sería útil disponer de ciertas células en negrita o notas agregadas (con superíndices).
    • Ceros finales es fácil, solo tiene que envolver la tabla en la función txtRound(parte de htmlTables). Mini ejemplo: mini_table <- data.frame(Name="A", x=4, y=9, stringsAsFactors = FALSE); htmlTable(txtRound(mini_table, 2)). Respecto extra de formato (por ejemplo, negrita), que es más difícil, pero posible. Voy a actualizar mi respuesta.
    • No creo que la solución que se ha descrito aquí para la negrita el texto es válido ya. En lugar de negrita el texto en la columna x, ahora simplemente imprime el contenido de la columna entre las etiquetas de formato <span style='font-weight:bold'> y </span>.
  2. 8

    (Sólo para hacerle saber, que yo soy el autor de los paquetes recomiendo…)

    Puede utilizar el paquete de ReporteRs a la salida de su tabla de Word. Vea aquí un tutorial (no es mía):
    http://www.sthda.com/english/wiki/create-and-format-word-documents-using-r-software-and-reporters-package

    Objetos FlexTable permiten formato y organizar tablas fácilmente con algunas estándar R código. Por ejemplo, para establecer la 2ª columna en negrita, el código es:

    myFlexTable[, 2] = textBold()

    Hay (de edad) ejemplos aquí:
    http://davidgohel.github.io/ReporteRs/flextable_examples.html

    Estos objetos puede ser añadido a una Palabra de informe utilizando la función de addFlexTable. La palabra informe puede ser generado con la función writeDoc.

    Si usted está trabajando en RStudio, usted puede imprimir el objeto y éste será visualizado en el visor de html para que pueda exportar en Word cuando usted está satisfecho con su contenido.

    Usted puede incluso agregar una Palabra a pie de página (véase el enlace más abajo)
    http://davidgohel.github.io/ReporteRs/pot_objects.html#pot_footnotes

    Si necesita más salida tabular, te recomiendo también la rtable paquete que se encarga de xtable objetos (y otras cosas que se tienen que desarrollar para satisfacer a mis colegas o clientes) – una rápida demostración puede ser visto aquí:

    http://davidgohel.github.io/tabular/

    Espero que ayude…

    • Gracias! Pero parece que los Periodistas es un intento similar de R2wd y la rebaja de la solución para el manejo de todo el proceso de la escritura en R, que no es lo que yo soy para el. La capacidad de impresión en el espectador dentro de Rstudio en htmlTable se parece más a lo que estoy buscando que ir a través de diferentes archivos de word. Aunque si htmlTable no es capaz de manipular la tabla de más que lo básico, yo podría ser forzado a buscar en este.
    • Como se ha indicado anteriormente FlexTable SE muestran en la htmlViewer!
    • Sólo quiero mencionar que ReporteRs paquete no está disponible ahora. Fue reescrito sin Java y ahora se llama officer. Para obtener más información, consulte cran.r-project.org/web/packages/officer/vignettes/word.html
  3. -1

    La respuesta corta es «no realmente.» Nunca he tenido mucha suerte de llegar con buen formato de tablas en MS Word. El mejor enfoque que puede ofrecer usted requiere el uso de Rmarkdown para representar las tablas en un archivo HTML. Usted puede copiar y pegar los resultados desde el archivo HTML, MS Word, pero yo creo que no hay garantías acerca de lo bien que el formato va a seguir.

    Formato de las tablas, se puede tratar de algo como el xtable paquete, o el pixiedust paquete. Pero de nuevo, no hay garantías de que la información de formato de transferencia.

Dejar respuesta

Please enter your comment!
Please enter your name here