首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >弹性表格的给定单元格中的多个超链接

弹性表格的给定单元格中的多个超链接
EN

Stack Overflow用户
提问于 2019-04-03 21:30:49
回答 2查看 158关注 0票数 0

我有一个数据框

代码语言:javascript
复制
df = data.frame("A" = c("a","b, c","c","d, e, f"), "B" = c(1,2,3,4), "link" = c("www.a.com", "www.b.com, www.c.com", "www.c.com", "www.d.com, www.e.com, www.f.com"))

A B链接

A 1 www.a.com

b、c 2 www.b.com、www.c.com

C3 www.c.com

d,e,f 4 www.d.com,www.e.com,www.f.com

我制作了格式表

代码语言:javascript
复制
dt.ft <- regulartable(data = dt[, list(A, B, link)])

我想让"A“列中的值与"link”列中的相应值进行超链接,这是我在@DavidGohel的帮助下使用以下命令实现的

代码语言:javascript
复制
dt.ft <- flextable(data = df, col_keys = c("A", "B"))
dt.ft <- compose(x = dt.ft, j = 1, value = as_paragraph( hyperlink_text(x = A, url = link)))

D

这很好用。但是正如你所看到的,在"A“列中有逗号分隔的值,在"link”列中有逗号分隔的链接。如何使相应的超链接显示在同一单元格中?这样,弹性表格将具有列"A“,第二行将具有"b”和"c“超链接到"www.b.com”和"www.c.com“。

如果有任何其他选择来设计DF,我可以做到。它只是我有动态的内容,它会从不同的价值,即。我不知道之前的链接数量。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-21 03:22:10

到目前为止,这是不可能的。方法是创建具有相似内容的多个行,但链接和链接值除外,然后合并这些行。这样,在合并的行中就会有多个按垂直顺序排列的超链接。

票数 0
EN

Stack Overflow用户

发布于 2019-06-26 05:03:26

对于像这样的不规则结构,您需要一个特定的函数。

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

df = data.frame("A" = c("a","b, c","c","d, e, f"), 
                "B" = c(1,2,3,4), 
                "link" = c("http://www.a.com", "http://www.b.com, http://www.c.com", 
                           "http://www.c.com", "http://www.d.com, http://www.e.com, http://www.f.com"),
                stringsAsFactors = FALSE)

ft <- flextable(data = df, col_keys = c("A", "B"))

multi_hyperlink_text <- function(labels, links){

  out <- mapply(
    function(text, url){
      dat <- hyperlink_text(text, url = url)
      dat <- split(dat, seq_along(text))
      as_paragraph(list_values = dat)
      }, 
    text = strsplit(labels, split = ","),
    url = strsplit(links, split = ","), SIMPLIFY = FALSE, USE.NAMES = FALSE
  )

  # the following is necessary to comply with expected 
  # flextable structure !
  Reduce(append, out)
}

ft <- compose(x = ft, j = 2, value = multi_hyperlink_text(A, link))
ft <- color(x = ft, j = 2, color = "#0077CC")
ft <- add_footer_lines(x = ft, "column B is made of links")
ft

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

https://stackoverflow.com/questions/55496434

复制
相关文章

相似问题

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