R knitr从数据帧中排序列表

时间:2015-12-02 11:14:48

标签: r knitr r-markdown

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

```{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.”    

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

2 个答案:

答案 0 :(得分:0)

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

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

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

1. foo
1. bar

所以你可以用

替换for循环
cat(paste('1.', df[, 3]), sep = '\n')

答案 1 :(得分:0)

由于您要打印降价列表,您可以使用pander包中的相关辅助函数,它为R->降价转换提供了许多便捷的方法。快速演示:

> 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 -->