将数据库打印为文本

Printing a database as text

我是 R Markdown 新手。 我有一个数据库如下:

text <- c("aaa","bbb", "ccc")
year <- c(2003,2004,2005)
author <- c("MV", "RV", "MV")
db <- as.data.frame(cbind(text, year, author))

我想打印一个要点如下:

  • aaa

    2003, MV

  • bbb

    2004, RV

  • ccc

    2005, MV

我试过如下:

- `r db[1, 1]`

- `r db[1, 2]`
- `r db[1, 3]`

- `r db[2, 1]`

- `r db[2, 2]`
- `r db[2, 3]`

- `r db[3, 1]`

- `r db[3, 2]`
- `r db[3, 3]`

有没有办法自动完成而不列出每一行?

您可以编写将数据打印为降价文本的 R 代码,例如使用 glue:

library(glue)

text <- c("aaa","bbb", "ccc")
year <- c(2003,2004,2005)
author <- c("MV", "RV", "MV")
db <- as.data.frame(cbind(text, year, author))

glue_data(
  db,
  "* {text}  ",
  "{year} {author}",
  .sep = "\n"
)
#> * aaa  
#> 2003 MV
#> * bbb  
#> 2004 RV
#> * ccc  
#> 2005 MV

如果你把它放在带有选项 results='asis' 的 RMarkdown 块中,生成的 markdown 将包含在你的编织文档中。

虽然 Joe Roe 的回答非常好,但下面是针对像我这样不喜欢安装软件包的人的解决方案 ;)

列表前一节中:

```{r echo=FALSE}
manually_assembled_list <- paste0(
  paste0("* ",   db$text, "  \n"),
  paste0(db$year,  ", ", db$author, "  \n"),
  collapse=""
)
```

然后在 Rmd 正文中:

`r manually_assembled_list`