我有一个如下所示的数据框:

library(dplyr)
mydf <- data_frame(headline = c('this is the first news',
                                'this is the second news'),
                   fulltext = c('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum',
                                'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum'))

本质上,我想为每篇文章创建一个文档( pdfhtml 等),打印 headline 后跟 fulltext 列中的前 100 个字符。

就像是

-- html/pdf 输出开始

这是第一条新闻

Lorem ipsum dolor sat amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut Labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco Laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。异常(exception) sint occaecat cupidatat non proident

这是第二条新闻

Lorem ipsum dolor sat amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut Labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco Laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。异常(exception) sint occaecat cupidatat non proident

-- html/pdf 输出结束

我怎么能用 knitr 做到这一点?

最佳答案

这可以通过组合 for 循环、 cat 和块选项 results = 'asis' 来完成

---
title: "Untitled"
output: html_document
---

```{r, include = FALSE}
library(dplyr)
mydf <- data_frame(headline = c('this is the first news',
                                'this is the second news'),
                   fulltext = c('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum',
                                'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum'))
```

```{r, echo = FALSE, results = 'asis'}
for (i in seq_len(nrow(mydf))){
  cat(paste0("**", mydf[["headline"]][i], "**"))
  cat("\n\n")
  cat(
    paste0(
      gsub("\\n", "\n\n", substr(mydf[["fulltext"]][i], 1, 100), "...")
    )
  )
  cat("\n\n")
}
```

关于r - 如何打印和组合存储在数据框中的文本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46895669/

10-12 19:58