gpt4 book ai didi

r - 使用独特的 RMarkdown 标题创建多个图

转载 作者:行者123 更新时间:2023-12-04 14:58:13 24 4
gpt4 key购买 nike

使用 spineplot在 R 中,我试图创建一系列图,将一些潜在的协变量与年龄类别进行比较,以便我们可以进行一些初步的数据探索。我用 R Markdown 编写了这段代码,我正在使用 RStudio 将文件编织成 HTML 输出。但是,我很难让我的循环生成的每个图都有一个合适的 RMarkdown header 。我试过把 cat("## my header")在生成每个图的循环中,但由于某种原因,它只显示第一个图,而不显示其余图。它会打印出其余的内容,但不会被解释为 Markdown。

这是我的代码示例:

---
title: "Minimal Working Example"
author: "TARehman"
date: "Wednesday, August 27, 2014"
output:
html_document:
toc: yes
---

# Spineplots
```{r mwe, echo=FALSE, results='asis', fig.height=5, fig.width=8, dpi=300}
tempdata <- data.frame(age=c("0-1","0-1","1-3","1-3","3-7","10-15","3-7","7-10"),
covA=c("Class 0","Class 1","Class 3","Class 2","Class 4","Class 3","Class 1","Class 2"),
covB=c("Class 1","Class 3","Class 2","Class 4","Class 4","Class 1","Class 1","Class 0"),
covC=c("Class 3","Class 3","Class 2","Class 3","Class 1","Class 4","Class 4","Class 4"))

temp_covars <- c("covA","covB","covC")

temp_locvec <- c(0.1,0.3,0.5,0.7,0.9)
temp_labvec <- c("0-1","1-3","3-7","7-10","10-15")
temp_colvec <- rainbow(n = 5,start = 7/12,end = 9/12,alpha = 0.8)

for(x in temp_covars) {

cat(paste("## Spineplot of",x,"vs. age groups\n",sep=" "))

spineplot(x = tempdata[[x]],
y = tempdata$age,
ylab = "Age Group",
xlab = "Class",
col = temp_colvec,
off = 0,
yaxlabels = c(NA,NA,NA,NA,NA),
main = paste("Classes of",x,"versus age groups",sep=" "))

for(j in 1:5) {
axis(side = 2,
at = temp_locvec[j],
labels = temp_labvec[j],
col.axis = temp_colvec[j],
font.axis = 2)
}
rm(j)
}
rm(list=c("x","temp_locvec","temp_labvec","temp_colvec"))
```

输出看起来像这样。

Minimal Working Example Output

最佳答案

事实证明,您需要额外的回车。正如 Yihui 所指出的,标题需要一个空行才能被 Markdown 正确解释。在我的循环末尾添加一个简单的 cat("\n\n") 可以解决问题。

我曾尝试只添加一个换行符,但错过了需要两个换行符才能正确解释标题。

---
title: "Working Solution"
author: "TARehman"
date: "September 3, 2014"
output:
html_document:
toc: yes
---

# Spineplots
```{r mwe, echo=FALSE, results='asis', fig.height=5, fig.width=8, dpi=300}
tempdata <- data.frame(age=c("0-1","0-1","1-3","1-3","3-7","10-15","3-7","7-10"),
covA=c("Class 0","Class 1","Class 3","Class 2","Class 4","Class 3","Class 1","Class 2"),
covB=c("Class 1","Class 3","Class 2","Class 4","Class 4","Class 1","Class 1","Class 0"),
covC=c("Class 3","Class 3","Class 2","Class 3","Class 1","Class 4","Class 4","Class 4"))

temp_covars <- c("covA","covB","covC")

temp_locvec <- c(0.1,0.3,0.5,0.7,0.9)
temp_labvec <- c("0-1","1-3","3-7","7-10","10-15")
temp_colvec <- rainbow(n = 5,start = 7/12,end = 9/12,alpha = 0.8)

for(x in temp_covars) {

cat(paste("## Spineplot of",x,"vs. age groups\n",sep=" "))

spineplot(x = tempdata[[x]],
y = tempdata$age,
ylab = "Age Group",
xlab = "Class",
col = temp_colvec,
off = 0,
yaxlabels = c(NA,NA,NA,NA,NA),
main = paste("Classes of",x,"versus age groups",sep=" "))

for(j in 1:5) {
axis(side = 2,
at = temp_locvec[j],
labels = temp_labvec[j],
col.axis = temp_colvec[j],
font.axis = 2)
}
rm(j)
cat("\n\n")
}
rm(list=c("x","temp_locvec","temp_labvec","temp_colvec"))
```

关于r - 使用独特的 RMarkdown 标题创建多个图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25535499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com