R markdown:使用for循环生成文本并显示figure/table
R markdown: Use for loop to generate text and display figure/table
我认为 R markdown 可以使用 for 循环生成文本部分,请参阅 this post。但是,我想知道是否有可能生成数字和 tables。
所以我做了一个简单的例子。假设在 R markdown 中,我想要使用 markdown 语言并显示 table 并在下面绘制。
这将 return 一个 table 和一个情节。
df<- data.frame(
name = LETTERS[1:12],
data = runif(n = 12))
new_df<-some_function(df,1)
formattable(new_df)
plot(new_df$data)
其中 some_function
是一个执行以下操作的简单函数
some_function<-function(df,loc){
df$data<-df$data+loc
return(df)
}
所以我希望得到这个重复5次,这意味着生成下面的选择5次。
这将 return 一个 table 和一个情节。
(图:假设那里显示了一个图)
(table: 假设那里显示了一个 table)
我应该如何使用一些模板编写代码来显示 table 和数字?下面是生成 new_df
列表的代码。
df_list=list()
for (i in 1:5){
new_df<-some_function(df,i)
df_list[[i]]<-new_df
}
目标是在 5 个单独的部分下显示 tables formattable(df_list[[i]])
和数字 plot(df_list[[i]]$data)
。 (假设每个部分的文本内容都比我做的例子更有意义)像下面这样的 screktch。
template <- "## This will return a table and a figure.
Table is: formattable(df_list[[i]])
Figure is: plot(df_list[[i]]$data)
"
for (i in 1:5) {
current <- df_list[[i]]
cat(sprintf(template, current,current$data))
}
这有可能实现吗?非常欢迎任何想法或想法。
您可以在 r chunk
中使用 result = 'asis'
并使用 cat()
创建部分。
---
title: "R Notebook"
output:
html_document
---
## Example
```{r, results='asis'}
require(ggplot2)
for(i in 1:5){
cat("### Section ", i, "\n")
df <- mtcars[sample(5),]
tb <- knitr::kable(df, caption = paste0("Table",i))
g1 <- ggplot2::ggplot(df, aes(x = mpg, y = disp, fill = gear)) +
ggplot2::geom_point() +
ggplot2::labs(title = paste0("Figure ", i))
cat("\n")
print(g1)
print(tb)
cat("\n")
}
```
我认为 R markdown 可以使用 for 循环生成文本部分,请参阅 this post。但是,我想知道是否有可能生成数字和 tables。
所以我做了一个简单的例子。假设在 R markdown 中,我想要使用 markdown 语言并显示 table 并在下面绘制。
这将 return 一个 table 和一个情节。
df<- data.frame(
name = LETTERS[1:12],
data = runif(n = 12))
new_df<-some_function(df,1)
formattable(new_df)
plot(new_df$data)
其中 some_function
是一个执行以下操作的简单函数
some_function<-function(df,loc){
df$data<-df$data+loc
return(df)
}
所以我希望得到这个重复5次,这意味着生成下面的选择5次。
这将 return 一个 table 和一个情节。
(图:假设那里显示了一个图) (table: 假设那里显示了一个 table)
我应该如何使用一些模板编写代码来显示 table 和数字?下面是生成 new_df
列表的代码。
df_list=list()
for (i in 1:5){
new_df<-some_function(df,i)
df_list[[i]]<-new_df
}
目标是在 5 个单独的部分下显示 tables formattable(df_list[[i]])
和数字 plot(df_list[[i]]$data)
。 (假设每个部分的文本内容都比我做的例子更有意义)像下面这样的 screktch。
template <- "## This will return a table and a figure.
Table is: formattable(df_list[[i]])
Figure is: plot(df_list[[i]]$data)
"
for (i in 1:5) {
current <- df_list[[i]]
cat(sprintf(template, current,current$data))
}
这有可能实现吗?非常欢迎任何想法或想法。
您可以在 r chunk
中使用 result = 'asis'
并使用 cat()
创建部分。
---
title: "R Notebook"
output:
html_document
---
## Example
```{r, results='asis'}
require(ggplot2)
for(i in 1:5){
cat("### Section ", i, "\n")
df <- mtcars[sample(5),]
tb <- knitr::kable(df, caption = paste0("Table",i))
g1 <- ggplot2::ggplot(df, aes(x = mpg, y = disp, fill = gear)) +
ggplot2::geom_point() +
ggplot2::labs(title = paste0("Figure ", i))
cat("\n")
print(g1)
print(tb)
cat("\n")
}
```