问题陈述
解决方案搜索和



...请参阅rmarkdown示例代码。

通过修改rmarkdown片段,获得了很好的答案,展示了解决方案。

---
title: "Reproducable Example"
author: "user2030503"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Example: mtcars

```{r}
write.csv2(mtcars, "./file.csv")

# Code to embed mtcars as csv
# Code to provide mechanism for button or link for later user interaction to open/save the csv.
```

## Problem

* I want to embed the csv file into the html generated by this rmarkdown script.
* Embedding here means, that the csv data are integral part of the hmtl (i.e. for offline use).
* I want a mechanism (button or link) in the html, which allows the user to open/save the data the csv.

## Search for a solution

There are techniques for embedding rdata files.

* http://rmarkdown.rstudio.com/articles_rdata.html
* https://github.com/richarddmorey/BayesFactorExtras/blob/master/BayesFactorExtras/R/downloadURI.R

## Question

* Dispite of above approaches, I did not find a solution yet how to solve the problem.
* How can it be achieved demonstrating it via this reproducable example ?

最佳答案

没有JavaScript;没有小部件;没有额外的CSS; 4 LoC(如果您喜欢不可读的代码,cld为1 LoC):

```{r}
write.csv2(mtcars, "./file.csv")

library(magrittr)
readLines("./file.csv") %>%
  paste0(collapse="\n") %>%
  openssl::base64_encode() -> encoded
```

[Download CSV](`r sprintf('data:text/csv;base64,%s', encoded)`)


非常坦率的:


将文件视为“东西”,并将其作为行读取
使它全部由换行符分隔的文本一滴
将其编码为base 64
使用适当的媒体类型制作数据URI
将其嵌入为降价链接


您还可以执行以下操作:

<a download="mtcars.csv" href="`r sprintf('data:text/csv;base64,%s', encoded)`">Straight HTML Download Link</a>


如果您想为浏览器(以及用户)提供建议的文件名(适用于降价规则中的HTML位置)。

注意:

readBin("./file.csv", "raw", file.info("./file.csv")$size) %>%
  openssl::base64_encode() -> encoded


readLines()版本同样有效。

关于r - 在html rmarkdown中嵌入csv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41196823/

10-13 09:04