Does anyone know if it is possible to loop through a list that varies in length of arguments to input into a custom function that outputs a flextable object in a word document using R Markdown? This is supposed to occur based on params in an R Markdown file.
I have tried using lapply but I keep getting the html or str() outputting into my word file. I have a temporary solution of making an R Markdown chunk for every item I may output and including a logical test for if we should output that table or not.
---
output:
officedown::rdocx_document:
params:
universe_report: TRUE
homeworld_name: "Tatooine"
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
```{r}
library(tidyverse)
library(flextable)
df = starwars %>%
mutate(hair_color_none = if_else(hair_color == "none", TRUE, FALSE, missing = FALSE))
custom_flextable = function(homeworld = "Tatooine", hair_color_none = TRUE){
df = df %>% filter(!!homeworld == homeworld)
if(hair_color_none){
data = data.frame(
df$hair_color,
df$eye_color
)
}else{
data = data.frame(
df$height,
df$mass
)
}
data %>%
flextable() %>%
return()
}
```
Heading for Homeworld r params$homeworld_name
No Hair Color
```{r}
if(params$universe_report==FALSE) custom_flextable(homeworld = params$homeworld_name,hair_color_none = FALSE)
```
Hair Color
```{r}
if(params$universe_report==FALSE) custom_flextable(homeworld = params$homeworld_name,hair_color_none = TRUE)
```
Heading for Universe Report
No Hair Color
```{r}
if(params$universe_report) custom_flextable(homeworld = "Tatooine",hair_color_none = TRUE)
```
```{r}
if(params$universe_report) custom_flextable(homeworld = "Naboo",hair_color_none = TRUE)
```
```{r}
if(params$universe_report) custom_flextable(homeworld = "etc...",hair_color_none = TRUE)
```
Hair Color
```{r}
if(params$universe_report) custom_flextable(homeworld = "Tatooine",hair_color_none = FALSE)
```
```{r}
if(params$universe_report) custom_flextable(homeworld = "Naboo",hair_color_none = FALSE)
```
```{r}
if(params$universe_report) custom_flextable(homeworld = "etc...",hair_color_none = FALSE)
```
I already tried solution Looping Flextables in R Markdown documents with Word output which isn't working.