如何在同一个扳手下格式化多列? / gt() 如何分配列位置?
How do you format multiple columns under the same spanner? / How does gt() assign column location?
我有一个带有一系列扳手的 gt table。每个扳手下方都有两列。我想对其进行格式化,以便突出显示所有其他扳手下的列。第 1 列具有存根值。在下面的代码中,第 2 列是 Spanner 1 下第一列的位置。我希望第 3 列突出显示紧挨着 2 的列,但它会跳过该列并突出显示第二个 Spanner 的第一列(我会调用第 4 列)。
my_data %>%
gt() %>%
tab_spanner_delim(delim = "_") %>%
tab_style(
style = list(cell_fill(color = "#f2dddc")),
locations = cells_body(columns = c(2,3)) # 6,7,10,11, etc. for every other spanner
)
那么如何设置我的代码格式以引用 spanner/how 下的两列?我是否可以引用扳手下不是第一列的任何列?有没有办法将扳手作为位置参考?
并且为了它的价值,我在 Shiny 中做这件事,所以一旦我理解了 gt() 的机制,我将需要进一步修改代码以使其动态化。
谢谢!
更新:我在引用扳手时遇到了类似的问题。下面的代码成功地添加了一个左边框,从扳手开始,运行 在第 2 列和第 3 列的底部(因此第一个扳手及其 2 列被包裹在外边框中)。
%>%
tab_style(
style = list(cell_borders(
sides = "left",
color = "black",
weight = px(3)
)),
locations = list(cells_column_labels(columns = c(2,3)), #left side of column two and 3 (remember col 3 is the first column of spanner 2)
cells_body(columns = c(2,3)), #Repeat of above but with the column values
cells_column_spanners(spanners = c(1,2)) #Left sides of spanners 1 and 2 (left side of spanner 2 = left side of col 3)
)) #Results are as expected
现在,我想强调第一个扳手的名字。鉴于上面的代码块,引用扳手 1 对我来说很有意义。当我引用扳手 1 时,第二个扳手会突出显示。知道为什么吗?我不明白为什么我可以通过引用“1”来获得扳手 1 左侧的边框,但是当我使用相同的扳手引用来突出显示单元格时,它会突出显示扳手 2。然后我尝试引用扳手 0,但它抛出了索引不存在的错误。
%>%
tab_style(
style = list(
cell_fill(color = "#f2dddc")),
locations = list(cells_column_spanners(
spanners = 1)) #Why does this line highlight spanner 2?
)
我开始意识到(我的)困惑在于制表符分隔符。我使用 pivot_wider 为 gt() 准备我的数据,导致 df 格式如下:
(1) Group1_varA, (2) Group2_varA, (3) Group3_varA, (4) Group1_varB,
(5) Group2_varB, (6) Group2_varB.
tab_spanner_delimiter 重新排列列,使 varA 和 VarB 在各自的组下,但列索引不变,使上例中的列顺序为 1,4,2,5,3 ,6.
我有一个带有一系列扳手的 gt table。每个扳手下方都有两列。我想对其进行格式化,以便突出显示所有其他扳手下的列。第 1 列具有存根值。在下面的代码中,第 2 列是 Spanner 1 下第一列的位置。我希望第 3 列突出显示紧挨着 2 的列,但它会跳过该列并突出显示第二个 Spanner 的第一列(我会调用第 4 列)。
my_data %>%
gt() %>%
tab_spanner_delim(delim = "_") %>%
tab_style(
style = list(cell_fill(color = "#f2dddc")),
locations = cells_body(columns = c(2,3)) # 6,7,10,11, etc. for every other spanner
)
那么如何设置我的代码格式以引用 spanner/how 下的两列?我是否可以引用扳手下不是第一列的任何列?有没有办法将扳手作为位置参考?
并且为了它的价值,我在 Shiny 中做这件事,所以一旦我理解了 gt() 的机制,我将需要进一步修改代码以使其动态化。
谢谢!
更新:我在引用扳手时遇到了类似的问题。下面的代码成功地添加了一个左边框,从扳手开始,运行 在第 2 列和第 3 列的底部(因此第一个扳手及其 2 列被包裹在外边框中)。
%>%
tab_style(
style = list(cell_borders(
sides = "left",
color = "black",
weight = px(3)
)),
locations = list(cells_column_labels(columns = c(2,3)), #left side of column two and 3 (remember col 3 is the first column of spanner 2)
cells_body(columns = c(2,3)), #Repeat of above but with the column values
cells_column_spanners(spanners = c(1,2)) #Left sides of spanners 1 and 2 (left side of spanner 2 = left side of col 3)
)) #Results are as expected
现在,我想强调第一个扳手的名字。鉴于上面的代码块,引用扳手 1 对我来说很有意义。当我引用扳手 1 时,第二个扳手会突出显示。知道为什么吗?我不明白为什么我可以通过引用“1”来获得扳手 1 左侧的边框,但是当我使用相同的扳手引用来突出显示单元格时,它会突出显示扳手 2。然后我尝试引用扳手 0,但它抛出了索引不存在的错误。
%>%
tab_style(
style = list(
cell_fill(color = "#f2dddc")),
locations = list(cells_column_spanners(
spanners = 1)) #Why does this line highlight spanner 2?
)
我开始意识到(我的)困惑在于制表符分隔符。我使用 pivot_wider 为 gt() 准备我的数据,导致 df 格式如下: (1) Group1_varA, (2) Group2_varA, (3) Group3_varA, (4) Group1_varB, (5) Group2_varB, (6) Group2_varB.
tab_spanner_delimiter 重新排列列,使 varA 和 VarB 在各自的组下,但列索引不变,使上例中的列顺序为 1,4,2,5,3 ,6.