Reputation: 19375
I have a dataframe like follows:
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'))
essentially, I would like to create a document (pdf
, html
, whatever) that for each article, prints the headline
followed by the 100 first characters from the fulltext
column.
Something like
-- start of html/pdf
output
this is the first news
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
this is the second news
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
-- end of html/pdf
output
How can I do that with knitr
?
Upvotes: 4
Views: 126
Reputation: 17279
This can be done with a combination of a for
loop, cat
, and the chunk option 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")
}
```
Upvotes: 4
Reputation: 76
You really want to use the knitr for some reason? A poor way to do this:
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'))
}
Upvotes: 2