如何打印和组合存储在数据框中的文本?

时间:2017-10-23 17:57:47

标签: r knitr

我有一个如下数据框:

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后跟{{1}中的100个第一个字符列。

这样的东西

- fulltext输出的开始

这是第一个新闻

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 repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Excepteur sint occaecat cupidatat non proident

这是第二个新闻

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 repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Excepteur sint occaecat cupidatat non proident

- html/pdf输出结束

如何使用html/pdf

执行此操作

2 个答案:

答案 0 :(得分:4)

这可以通过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")
}
```

答案 1 :(得分:2)

你真的想出于某种原因使用针织者吗?一个糟糕的方法:

for(i in 1:nrow(mydf)){
  temp=(paste(mydf[i,1],'<br>','\n',mydf[i,2]))
  write.table(temp,paste(i,'.txt'), row.names = F,col.names = F)
  knit(paste(i,'.txt'),paste(i,'.html'))
}