首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rmd Rmd文件外的超链接

Rmd Rmd文件外的超链接
EN

Stack Overflow用户
提问于 2018-10-10 17:39:07
回答 3查看 2.9K关注 0票数 2

我想知道我们如何定义一个超链接的R标价以外的Rmd文件。在Rmd文件中定义超链接就像键入超链接可一样容易;但是,如果在Rmd文件上调用一些生成地址到文件的其他r文件(例如,函数),是否有方法将这些信息传输回Rmd文件以生成超链接?

如需更多澄清,请参见下面的示例:

在Rmd文件中:

代码语言:javascript
复制
myFun( with some input)

在myFun内部:

代码语言:javascript
复制
myFun <- function( with some input)
some calculations...
return("[click here](C:/myFile.docx)")

生成的html页面上的输出是:

1 "单击此处

这不是超链接!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-11 21:59:27

正如问题中提到的,假设'myFun‘函数的输出是超链接字符串,下面是对我最有效的方法:

在myFun内部:

代码语言:javascript
复制
myFun <- function()
...some calculations to generate a csv file...
return("C:/myFile.csv")

在Rmd文件中:

代码语言:javascript
复制
```{r, echo=FALSE}

myHyperlink <- myFun()

hyperlink_exists = !is.null(myHyperlink)

代码语言:javascript
复制
```{r, eval=hyperlink_exists, results="asis", echo=FALSE}

cat(paste0(“文件已保存",”)",““)

代码语言:javascript
复制
票数 0
EN

Stack Overflow用户

发布于 2018-10-10 20:02:09

要定义rmd文件之外的链接,可以使用参数化报告。这允许您在编译rmarkdown文档时将值传递给它。为此,首先创建一个包含所需参数的rmarkdown文档,这些参数在yaml头中声明,然后在报告的后面使用。然后,在一个单独的R脚本中,运行render命令(从rmarkdown包)并传递所需的参数值。

下面是一个使用catpaste生成链接的示例。作为比较,我还添加了第二组参数,使用@JohnCoene的答案中的方法添加不同的链接。我将rmarkdown文档保存为"test.rmd",这是如何在render命令中识别文档的。

rmarkdown文档

代码语言:javascript
复制
---
output: html_document
params:
  text1: "add text"
  link1: "add URL"
  text2: "add text"
  link2: "add URL" 
---

```{r setup, include=FALSE}

Knitr::opts_chunk$set(回声=假)

代码语言:javascript
复制
```{r}

函数添加链接

myFun <-函数(文本、链接、inline=TRUE) {

if(内联){

代码语言:javascript
复制
paste("[", text, "](", link, ")", sep="")

}否则{

代码语言:javascript
复制
cat("[", text, "](", link, ")", sep="")

}

}

代码语言:javascript
复制
Blah, blah, blah, more text. And here's the link: 

```{r, results="asis"}

myFun(params$text1 1,params$link1 1,inline=FALSE)

代码语言:javascript
复制
Blah, blah, blah, more text. And here's a way to `r myFun(params$text1, params$link1)`.

Or, using the examples from `@JohnCoene's` answer:

With an HTML tag:

```{r, results="asis"}

tg <-函数(链接,文本){

paste0("",文本,"")

}

tg(params$link2 2,params$text2 2)

代码语言:javascript
复制
With `htmltools`:

```{r}

install.packages("htmltools")

库(Htmltools)

标签$a(

href = params$link2,2,

params$text2 2

)

代码语言:javascript
复制

单独的R脚本来呈现rmarkdown文档

代码语言:javascript
复制
library(rmarkdown)

render(input="test.rmd", 
       params=list(text1="link to Stackoverflow", 
                   link1="https://stackoverflow.com/questions/52745926/r-markdown-hyperlink-outside-rmd-file",
                   text2="link to google",
                   link2="https://google.com"))

输出html文档如下所示:

票数 2
EN

Stack Overflow用户

发布于 2018-10-10 18:25:37

有多种解决方案,返回html标记或使用htmltools包。

HTML标签

代码语言:javascript
复制
```{r, results="asis"}

tg <-函数(链接,文本){

paste0("",文本,"")

}

tg("http://google.com",“链接到谷歌)

代码语言:javascript
复制

htmltools

肯定会推荐这样的方法。

代码语言:javascript
复制
```{r}

install.packages("htmltools")

库(Htmltools)

标签$a(

"https://google.com"

“链接到谷歌”

)

代码语言:javascript
复制
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52745926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档