以编程方式从data.frame插入标头和文本

时间:2017-05-09 17:57:55

标签: r r-markdown

我正在尝试在RMarkdown中创建一个可重现的“数据字典”,以简化我描述我使用的各种未记录数据集的工作。我在这里查看了最相关的帖子:Programmatically insert text, headers and lists with R markdown,但遇到了问题。我有一个data.frame,它包含来自我的数据集的colnames和一列描述每个变量的字符串。当我编写RMarkdown文档时,我得到第一个变量的一个格式化标题,其余的显示格式化哈希标记(##)和变量名称,但不是格式化标题。

```{r, results = 'asis'}
varnames <- c("A", "B", "C")
vardesc <- c("A is this.", "B is this.", "C is this.")
df <- data.frame(varnames, vardesc)

for(i in 1:nrow(df)) {
cat("##", df$vars[i], "  \n")
cat("Description:  ", df$vardesc[i])
cat("  \n")
}
```

这给了我变量“A”只是一个格式化的标题。看来我的新手功能知识可能是罪魁祸首,但我无法弄清楚我做错了什么。

我的输出如下(A格式化,其余未格式化):

 ## A
 Description:
 A is this.
 ## B
 Description:
 B is this.
 ## C
 Description:
 C is this.

任何建议都将不胜感激。如果它们存在,我愿意接受其他方法。

1 个答案:

答案 0 :(得分:0)

请改为尝试:

varnames <- c("A", "B", "C")
vardesc <- c("A is this.", "B is this.", "C is this.")
df <- data.frame(varnames, vardesc, stringsAsFactors = FALSE)

for(i in 1:nrow(df)) {
  cat("##", df$varnames[i], "\n")
  cat("Description:", "\n")
  cat(df$vardesc[i], "\n")
  cat("\n")
}

输出是:

## A 
Description: 
A is this. 

## B 
Description: 
B is this. 

## C 
Description: 
C is this.