Dúvida tabela html em loop no Rmarkdown

Bom dia, gente!

Tenho um código assim:

# Resultados:
## ação 1
```{r, echo=F}
as.htmlwidget(formattable(a,
                                          formatos),width=360)

```

no meu report em Rmarkdown e roda liso.
Porém, tenho 22 ações para apresentar uma a uma.

Queria fazer um loop.

Daí, fiz assim (abaixo), e ele imprime as ações certinho, mas não imprime a tabela! Porque? Como faz?

# Resultados:

```{r, echo=F, results="asis"}
for (i in 1:nrow(a)
{
   cat("## ação ",i,"\n")
   as.htmlwidget(formattable(a[i,],
                                          formatos),width=360)
}
```

Oi Pri!
Eu tive um problema parecido com esse mas com uma outra função. O que funcionou para mim foi dar um print na tabela. No seu caso o código ficaria assim:

for (i in 1:nrow(a)) {
  cat("## ação ",i,"\n")
  print(as.htmlwidget(formattable(a[i,],
                                         formatos),width=360))
}

Espero que isso resolva seu problema!

1 curtida

Obrigada, Nicole!

Mas mesmo assim ele não imprime a tabela :confused:

Nicole, o que eu fiz: tirei o as.htmlwidgets (pois só precisava dele para definir o tamanho da tabela).

Vi que a função print() tem um argumento de tamanho, e deixei apenas

for (i in 1:nrow(a)) {
  cat("## ação ",i,"\n")
  print(formattable(a[i,],
                              formatos),width=360)
}

Deu certo!!!
Só tem uma coisa: ele faz apenas o primeiro item (i=1), depois imprime mais nada. hahahaha

Olha este site acho que deve resolver o seu problema.

Se não der certo, pensei em fazer algo assim:

lista <- list()
j <- 0
for (i in 1:nrow(a)) {
 j <- j + 1
 lista[[j]] <- shiny::h2(paste0("ação ",i,"\n"))
 j <- j + 1
 lista[[j]] <- as.htmlwidget(formattable(a[i,],
                                        formatos),width=360)
 j <- j + 1
 lista[[j]] <- shiny::tags$br()
}

htmltools::tagList(lista)
1 curtida