Ang*_*elo 4 r r-markdown kableextra kable
我正在尝试在rmarkdown文档中创建一个表并使用非常受欢迎且非常棒的kable和kableExtra工具来定位HTML输出.
该表需要具有超链接的单元格.虽然我可以将URL放在渲染表的一列中,但我真的更喜欢使用另一列作为锚文本,并使包含URL的列完全不可见.
例如,让我们创建一个带有超链接的kable表...
dt <- mtcars[c(15,16,19,31),1:3] %>% mutate(model=row.names(.))
dt$url <- c("https://en.wikipedia.org/wiki/Cadillac_Fleetwood",
"https://www.lincoln.com/luxury-cars/continental/",
"http://shop.honda.com/civics.aspx",
"https://bringatrailer.com/2011/12/28/striking-1973-maserati-bora-4-9/")
Run Code Online (Sandbox Code Playgroud)
在kable中渲染它的最原始的方法是:
kable(dt, format = "html") %>%
kable_styling(bootstrap_options = c("hover", "condensed"))
Run Code Online (Sandbox Code Playgroud)
这会产生如下所示的输出:
这几乎是我想要的,但我想隐藏"url"列,而是让"model"列成为"url"列中给出的地址的超链接.在这个例子中显示原始URL可能没问题,但我的实际URL真的很难看,不适合人类阅读.
我想这里有两个问题.一种是如何抑制渲染列,另一种是如何使用列数据在单元格中正确创建超链接.
在写完这个问题后,我可以简单地在用kable渲染之前为超链接单元格编写原始HTML.关键是在调用kable()时设置escape = FALSE.
换句话说,我可以做到这一点......
dt <- mtcars[c(15,16,19,31),1:3] %>% mutate(model=row.names(.))
dt$url <- c("https://en.wikipedia.org/wiki/Cadillac_Fleetwood",
"https://www.lincoln.com/luxury-cars/continental/",
"http://shop.honda.com/civics.aspx",
"https://bringatrailer.com/2011/12/28/striking-1973-maserati-bora-4-9/")
dt <- dt %>% mutate(model=paste("<a href=\"",url,"\">",model,"</a>",sep="")) %>%
select (mpg,cyl,disp,model)
kable(dt, format = "html", escape = FALSE) %>%
kable_styling(bootstrap_options = c("hover", "condensed"))
Run Code Online (Sandbox Code Playgroud)
这样做,但我宁愿不将R和HTML交错放在这样一个令人不快的角色三明治中.
有一个link在选项cell_spec,您可以使用.请参阅https://cran.r-project.org/web/packages/kableExtra/vignettes/awesome_table_in_html.html#links
library(dplyr)
library(knitr)
library(kableExtra)
dt_url <- c("https://en.wikipedia.org/wiki/Cadillac_Fleetwood",
"https://www.lincoln.com/luxury-cars/continental/",
"http://shop.honda.com/civics.aspx",
"https://bringatrailer.com/2011/12/28/striking-1973-maserati-bora-4-9/")
mtcars[c(15,16,19,31),1:3] %>%
mutate(model = cell_spec(row.names(.), "html", link = dt_url)) %>%
kable("html", escape = FALSE) %>%
kable_styling(bootstrap_options = c("hover", "condensed"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |