首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >huxtable表格的单元格内分行符

huxtable表格的单元格内分行符
EN

Stack Overflow用户
提问于 2018-03-21 04:17:05
回答 3查看 1.2K关注 0票数 6

我最近开始为表使用赫克斯表 R包,我对它印象深刻。然而,有一件事我似乎搞不懂,那就是如何在一个细胞中获得线段。这是我尝试过的

代码语言:javascript
复制
library(tidyverse)
library(huxtable)
cars <- mtcars %>% 
  mutate(car = rownames(.),
         car = str_replace(car, " ", "\n")) %>% 
  slice(1:5) %>% 
  select(car, cyl, hp)

cars

# A tibble: 5 x 3
  car                    cyl    hp
  <chr>                <dbl> <dbl>
1 "Mazda\nRX4"          6.00 110  
2 "Mazda\nRX4 Wag"      6.00 110  
3 "Datsun\n710"         4.00  93.0
4 "Hornet\n4 Drive"     6.00 110  
5 "Hornet\nSportabout"  8.00 175 

ht <- as_hux(cars, add_colnames = TRUE)
escape_contents(ht) <- TRUE
ht

但这最终没有中断行,如下面的截图所示。

escape_contents部分似乎没有什么不同。

我不确定我想要的是否可能,但我知道它在其他包中(例如,DT::datatable)。不过,如果可能的话,我很想使用huxtable,因为我喜欢这个包的设计和灵活性。

任何想法都会很好。

编辑:--我应该指定--我希望能让它适用于PDF。

EN

回答 3

Stack Overflow用户

发布于 2018-03-21 06:48:31

根据转义HTML或LaTeX,您应该使用escape_contents(ht) <- FALSE,使用<br>标记而不是\n

代码语言:javascript
复制
library(tidyverse)
library(huxtable)
cars <- mtcars %>% mutate(car = rownames(.),
                          car = str_replace(car, " ", "<br>")) %>% 
                   slice(1:5) %>% select(car, cyl, hp)

 ht <- as_hux(cars, add_colnames = TRUE)
 escape_contents(ht) <- FALSE
 ht

请注意,输出是一个Rmarkdown文档,谢谢您提供的包信息。看上去不错。以下是我的产量

票数 3
EN

Stack Overflow用户

发布于 2019-09-04 21:24:19

试试这个,它可以最小化反斜杠的数量:

代码语言:javascript
复制
library(tidyverse)
library(huxtable)

cars <- mtcars %>% mutate(car = rownames(.))
cars$car <- str_replace(cars$car, " ", "\\\\newline ")
cars %>% 
      as_hux(add_colnames = TRUE) %>% 
      set_wrap(TRUE) %>% 
      set_escape_contents(everywhere, "car",  FALSE) %>% 
      quick_pdf()

我认为,set_wrap()调用对于LaTeX表接受换行符是必要的。

如果您想要转义包含换行符的单元格的不同部分,您可以手动地这样做,例如使用xtable::sanitize()

票数 2
EN

Stack Overflow用户

发布于 2019-09-03 19:22:49

好吧,结合这个LaTeX StackExchange帖子这个经典的XKCD的观点,我得到了以下信息:

代码语言:javascript
复制
library(tidyverse)
library(huxtable)
cars <- mtcars %>% 
  mutate(car = rownames(.),
         car = str_replace(car, "(\\S*)\\s(.*)",
                           "\\\\vtop{\\\\hbox{\\\\strut \\1}\\\\hbox{\\\\strut \\2}}")) %>% 
  slice(1:5) %>% 
  select(car, cyl, hp)

ht <- as_hux(cars, add_colnames = TRUE) %>% 
    set_escape_contents(1:6, 1, FALSE)
theme_article(ht)

它提供了以下PDF输出:

当然,如果您使用手工构建自己的单元而不是使用str_replace,那么您将不需要太多的转义。请注意,对于带换行的单元格,将set_escape_contents设置为FALSE是至关重要的。

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

https://stackoverflow.com/questions/49398097

复制
相关文章

相似问题

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