gpt4 book ai didi

r - kable kableExtra,带有超链接的单元格

转载 作者:行者123 更新时间:2023-12-04 12:11:11 25 4
gpt4 key购买 nike

我正在尝试使用非常受欢迎且非常棒的 kable 和 kableExtra 工具在 rmarkdown 文档和目标 HTML 输出中创建一个表格。

该表需要具有带超链接的单元格。虽然我可以将 URL 放在渲染表的一列中,但我真的更喜欢使用另一列作为 anchor 文本,并使包含 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/")

在 kable 中渲染它的最原始方法是这样的:
kable(dt, format = "html") %>%
kable_styling(bootstrap_options = c("hover", "condensed"))

这会产生如下所示的输出:

table with URL's

这几乎就是我想要的,但我想隐藏“url”列,而是让“model”列成为“url”列中给出的地址的超链接。在这个例子中显示原始 URL 可能没问题,但我的实际 URL 真的很难看,不适合人类阅读。

相反,我想渲染这样的东西:
Table with proper hyperlinks

我想这里有两个问题。一个是如何抑制渲染列,另一个是如何使用列数据在单元格中正确创建超链接。

写完这个问题后,我可以在使用 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"))

行得通,但我宁愿不要将 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"))

关于r - kable kableExtra,带有超链接的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48506712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com