【问题标题】:R - knitr:kable - removing individual headers and adding single header on multiple columnsR - knitr:kable - 删除单个标题并在多个列上添加单个标题
【发布时间】:2017-11-28 15:28:30
【问题描述】:

Rmarkdown 文件中的 R 代码:

col1 <- c("dummydata","dummydata","dummydata")
col2 <- c("dummydata","dummydata","dummydata")  
col3 <- c("dummydata","dummydata","dummydata")
col4 <- c("dummydata","dummydata","dummydata")
col5 <- c("dummydata","dummydata","dummydata")
col6 <- c("dummydata","dummydata","dummydata")
col7 <- c("dummydata","dummydata","dummydata")
col8 <- c("dummydata","dummydata","dummydata")

df1 <- data.frame(col1,col2,col3,col4,col5,col6,col7,col8)

kable(df1, format="html",table.attr='class="myTable"') %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
add_header_above(c("Group1" = 2, "Group2" = 2,"Group3" = 2, "Group4" = 2))

输出:

问题:我只想要组合列上的标题,即 Group1、Group2 等。我想删除单个列上的标题,即 col1、col2 等。

有没有办法使用数据框、html/javascript、Rmarkdown 或任何 R 包来做到这一点?

【问题讨论】:

    标签: r knitr r-markdown flexdashboard knitrbootstrap


    【解决方案1】:

    如果您经常遇到此类问题,您应该熟悉正则表达式和 gsub 函数。

    这是一个解决方案,第一行是你的最后一行代码增强了“x

    x <- kable(df1, format="html",table.attr='class="myTable"') %>%
    kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>%
    add_header_above(c("Group1" = 2, "Group2" = 2,"Group3" = 2, "Group4" = 2))
    
    gsub("</th></tr><tr>.*</thead>","</thead>",x)
    

    gsub 的工作方式如下:查找第一个参数的匹配项,将其替换为第二个参数,然后对作为第三个参数提供的变量执行所有操作。第一个参数中的点星 (.*) 表示任何类型和数量的字符都可以在第三个参数中的结束之前跟随。该算法是贪婪的,它试图找到最长的匹配字符串。由于此输入参数中只有一个,因此在这里可以正常工作。

    【讨论】:

    • 谢谢。我实际上知道正则表达式(基础知识)。我正在努力的是 Rmd 文件生成 html 文件。你正在使用那个 html 文件来应用正则表达式吗?
    • 是的,这基本上就是它可以工作的方式,这取决于你想要什么以及如何去做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2022-07-05
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多