我想知道我们如何定义一个超链接的R标价以外的Rmd文件。在Rmd文件中定义超链接就像键入超链接可一样容易;但是,如果在Rmd文件上调用一些生成地址到文件的其他r文件(例如,函数),是否有方法将这些信息传输回Rmd文件以生成超链接?
如需更多澄清,请参见下面的示例:
在Rmd文件中:
myFun( with some input)在myFun内部:
myFun <- function( with some input)
some calculations...
return("[click here](C:/myFile.docx)")生成的html页面上的输出是:
1 "单击此处“
这不是超链接!
发布于 2018-10-11 21:59:27
正如问题中提到的,假设'myFun‘函数的输出是超链接字符串,下面是对我最有效的方法:
在myFun内部:
myFun <- function()
...some calculations to generate a csv file...
return("C:/myFile.csv")在Rmd文件中:
```{r, echo=FALSE}myHyperlink <- myFun()
hyperlink_exists = !is.null(myHyperlink)
```{r, eval=hyperlink_exists, results="asis", echo=FALSE}cat(paste0(“文件已保存",”)",““)
发布于 2018-10-10 20:02:09
要定义rmd文件之外的链接,可以使用参数化报告。这允许您在编译rmarkdown文档时将值传递给它。为此,首先创建一个包含所需参数的rmarkdown文档,这些参数在yaml头中声明,然后在报告的后面使用。然后,在一个单独的R脚本中,运行render命令(从rmarkdown包)并传递所需的参数值。
下面是一个使用cat或paste生成链接的示例。作为比较,我还添加了第二组参数,使用@JohnCoene的答案中的方法添加不同的链接。我将rmarkdown文档保存为"test.rmd",这是如何在render命令中识别文档的。
rmarkdown文档
---
output: html_document
params:
text1: "add text"
link1: "add URL"
text2: "add text"
link2: "add URL"
---
```{r setup, include=FALSE}Knitr::opts_chunk$set(回声=假)
```{r}函数添加链接
myFun <-函数(文本、链接、inline=TRUE) {
if(内联){
paste("[", text, "](", link, ")", sep="")}否则{
cat("[", text, "](", link, ")", sep="")}
}
Blah, blah, blah, more text. And here's the link:
```{r, results="asis"}myFun(params$text1 1,params$link1 1,inline=FALSE)
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)
With `htmltools`:
```{r}install.packages("htmltools")
库(Htmltools)
标签$a(
href = params$link2,2,
params$text2 2
)
单独的R脚本来呈现rmarkdown文档
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文档如下所示:

发布于 2018-10-10 18:25:37
有多种解决方案,返回html标记或使用htmltools包。
HTML标签
```{r, results="asis"}tg <-函数(链接,文本){
paste0("",文本,"")
}
tg("http://google.com",“链接到谷歌)
htmltools
肯定会推荐这样的方法。
```{r}install.packages("htmltools")
库(Htmltools)
标签$a(
“链接到谷歌”
)
https://stackoverflow.com/questions/52745926
复制相似问题