我想利用{gt}的漂亮的新的data_color
改造,但我也想利用text_transformation
,并添加链接和自定义文本的表。例如,给定这个数据:
library(dplyr)
library(gt)
dat <- data.frame(
flag = c("safe", "out", "tie"),
url = c("https://www.google.com", "https://www.yahoo.com", "https://www.bing.com"),
value1 = c(1, NA, 3),
value2 = c(1.1, NA, 8)
)
dat
dat
flag url value1 value2
1 safe https://www.google.com 1 1.1
2 out https://www.yahoo.com NA NA
3 tie https://www.bing.com 3 8.0
然后创建一个表:
gt(dat) %>%
cols_hide(columns = c("flag", "url")) %>%
data_color(
direction = "row",
palette = "viridis"
) %>%
text_transform(fn = function(x) glue("<a href=\"{dat$url}\" target=\"_blank\">{x}</a> {dat$flag}"))
因此,我可以创建一个包含活动URL的表:
但是如果我有多个URL列与相应的vlaue列相匹配呢?例如,这个data.frame:
dat <- data.frame(
flag = c("safe", "out", "tie"),
url1 = c("https://www.google.com", "https://www.yahoo.com", "https://www.bing.com"),
url2 = c("https://www.one.com", "https://www.two.com", "https://www.three.com"),
value1 = c(1, NA, 3),
value2 = c(1.1, NA, 8)
)
dat
如何将url_1
和value_1
的值相加,并将_2
的值相加?我知道我可以pivot_*
得到正确的链接,但然后AKAIK列变成字符串,然后我不能在data_color
中使用它们。
有没有什么想法我可以把这两种能力结合起来?
2条答案
按热度按时间knsnq2tg1#
也许有一个更优雅的方法,但一个简单的方法是使用两个
text_transform
,每对url_
和value_
列一个:编辑作为
for
的替代方法,您可以使用purrr::reduce
如下:rggaifut2#
@stefan:这太长了,不能作为评论添加,但采取你的方法并概括它,这可以在这里工作: