来自数据框的 R knitr 有序列表

R knitr ordered list from dataframe

我正在尝试将 R data.frame 列作为有序列表嵌入到我的 knitr pdf 输出中。到目前为止,我最好的尝试是:

```{r df, echo=FALSE, results='asis'}
  df <- read.csv2(file.path(filePath,'data.csv'))
  for (i in nrow(df)){
    print(paste(i, '. ', df[i,3]))
  }
``` 

导致此输出:

[1] “8 . At vero eos et accusam et justo duo dolores et ea rebum.”    

我希望这是一个适合普通文本输出的八点有序列表。有人知道如何实现吗?

使用cat()代替print(),例如

cat(paste(i, '. ', df[i,3]), '\n')

实际上您不需要递增 i,因为 Pandoc 不关心列表中的实际数字(这可能有点令人惊讶)。您可以只对所有项目使用 1,例如

1. foo
1. bar

因此您可以将 for 循环替换为

cat(paste('1.', df[, 3]), sep = '\n')

如果要打印markdown列表,可以使用pander包中的相关辅助函数,它提供了很多方便的R->markdown转换方式。快速演示:

> pandoc.list(head(rownames(mtcars)), style = 'ordered')

1. Mazda RX4 
2. Mazda RX4 Wag 
3. Datsun 710 
4. Hornet 4 Drive 
5. Hornet Sportabout 
6. Valiant 

<!-- end of list -->