¿Cómo puedo usar un bucle para escribir un script Rmarkdown redundante? [duplicar]

Resuelto Seydou GORO asked hace 54 años • 1 respuestas

Estoy creando un archivo Markdown para generar 32 tablas estadísticas. Me gustaría automatizarlo. Las tablas estadísticas se almacenan en una lista. Aquí hay una representación ficticia de mi lista de tablas.

mylist<-list(
fruits=data.frame(fruit=c("Apple","Mango","Banana"),
                   number=c(45,100,70)),

animals=data.frame(animal=c("Monkey","Lion","Whale","Raven"),
                    number=c(100,2,20,60)),

countries=data.frame(country=c("France","Senegal","China"),
                      number=c(200,75,1000)),

cars=data.frame(car=c("Audi","Peugeot","Porsche","Toyota","Alpha Romeo"),
                 number=c(5,7,18,2,8)))


saveRDS(mylist, file = "mylist.RDS")

Aquí está el script Markdown que utilicé para generar mis resultados:

---
TEtitle: R
author: "MYNAME"
date: "2024-02-16"
output:
  word_document: default
  html_document: default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, eval = TRUE)
```


```{r}
mylist<-readRDS("mylist.RDS")
library(knitr)
```



# Statistics on `r names(mylist)[1]`


```{r}
kable(mylist[[1]])
```



# Statistics on `r names(mylist)[2]`


```{r}
kable(mylist[[2]])
```


# Statistics on `r names(mylist)[3]`


```{r}
kable(mylist[[3]])
```


# Statistics on `r names(mylist)[4]`


```{r}
kable(mylist[[4]])
```

Automatizar con un bucle, eso es lo que intenté, con la esperanza de reproducir el código anterior. No funcionó. No tengo otras ideas. ¿Alguien puede ayudarme?

`r for (i in seq_along(mylist)) {
  cat("# Statistics on `r names(mylist)[", i, "]`\n\n")
  cat("```{r}\n")
  cat("kable(mylist[[", i, "]])\n")
  cat("```\n\n")
`
Seydou GORO avatar Jan 01 '70 08:01 Seydou GORO
Aceptado

Coloque su forbucle en un fragmento de código para el cual configuró la opción de fragmento results='asis'. Aquí hay una solución funcional para lograr el resultado deseado.

---
TEtitle: R
author: "MYNAME"
date: "2024-02-16"
output:
  word_document: default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, eval = TRUE)

library(knitr)
```


```{r}
mylist <- list(
  fruits = data.frame(
    fruit = c("Apple", "Mango", "Banana"),
    number = c(45, 100, 70)
  ),
  animals = data.frame(
    animal = c("Monkey", "Lion", "Whale", "Raven"),
    number = c(100, 2, 20, 60)
  ),
  countries = data.frame(
    country = c("France", "Senegal", "China"),
    number = c(200, 75, 1000)
  ),
  cars = data.frame(
    car = c("Audi", "Peugeot", "Porsche", "Toyota", "Alpha Romeo"),
    number = c(5, 7, 18, 2, 8)
  )
)
```

```{r results='asis'}
for (i in seq_along(mylist)) {
  cat("# Statistics on `", names(mylist)[i], "`\n\n")
  print(kable(mylist[[i]]))
  cat("\n\n")
}
```

ingrese la descripción de la imagen aquí

stefan avatar Feb 16 '2024 10:02 stefan