R:使用管道在kable内部循环,同时将输出管道化到下一步(组_行)

R:使用管道在kable内部循环,同时将输出管道化到下一步(组_行),r,loops,pipe,kable,R,Loops,Pipe,Kable,我正在使用kable,并为大约500个数据集创建一个表,因此我尝试创建一个脚本并在其上循环。有一件事让我感到困惑,那就是我正在使用group\u rows选项,尽管组的数量在数据集之间会发生变化。如何设置R脚本来考虑这一点 下面是我的脚本,它当前在kable命令中使用了一个正常的循环,但不起作用 [数据集GRP是确定组的预定义标准] 对于下面的代码,下面是GRP&color数据集。它们根本没有连接到mtcars: grps <- structure(list(no.cars = c(2,

我正在使用kable,并为大约500个数据集创建一个表,因此我尝试创建一个脚本并在其上循环。有一件事让我感到困惑,那就是我正在使用
group\u rows
选项,尽管组的数量在数据集之间会发生变化。如何设置R脚本来考虑这一点

下面是我的脚本,它当前在
kable
命令中使用了一个正常的循环,但不起作用

[数据集
GRP
是确定组的预定义标准]

对于下面的代码,下面是
GRP
&
color
数据集。它们根本没有连接到mtcars:

grps <- 
structure(list(no.cars = c(2,1,2), maincars = c("Mazda", 
"Datsun", "Hornet"), start = c(1, 3, 4),
 end = c(2L, 3L, 5L)), .Names = c("no.cars", "maincars", 
"start", "end"), row.names = c(NA, -3L), class = "data.frame")

color <- structure(list(color=c("#20324C", "#D2A8A4", "#FFC65A")),.Names = c("color"), row.names = c(NA, 
-3L), class = "data.frame")

mtcars[1:5,] %>% 
    knitr::kable(format="html")%>% 
    kable_styling("striped", full_width = F) %>%
    for(g in 1:nrow(grps)){
        group_rows(grps$maincars[g], grps$start[g], grps$end[g],label_row_css = paste0("background-color: ",color[g,1],"; color: #F1F1F1;")) %>% .()
    } %>% as_image()
grps%
可折叠样式(“条纹”,全宽=F)%>%
适用于(g/1:nrow(grps)){
分组行(grps$maincars[g]、grps$start[g]、grps$end[g]、标签行(css=paste0)(“背景色:”,颜色[g,1],“颜色:”)%>()
}%%>%as_image()
因此,它没有创建任何组。我很好奇是否还有其他选择可以尝试


谢谢

考虑非管道解决方案:

sub <- mtcars[1:5,]
sub <- knitr::kable(sub, format="html")
sub <- kable_styling(sub, "striped", full_width = FALSE) 

for(g in 1:nrow(grps)){
   sub <- group_rows(sub, grps$maincars[g], grps$start[g], grps$end[g],
                     label_row_css = paste0("background-color: ", color[g,1],
                                            "; color: #F1F1F1;")
                    )
}

as_image(sub)

sub考虑非管道解决方案:

sub <- mtcars[1:5,]
sub <- knitr::kable(sub, format="html")
sub <- kable_styling(sub, "striped", full_width = FALSE) 

for(g in 1:nrow(grps)){
   sub <- group_rows(sub, grps$maincars[g], grps$start[g], grps$end[g],
                     label_row_css = paste0("background-color: ", color[g,1],
                                            "; color: #F1F1F1;")
                    )
}

as_image(sub)

sub您能提供一个完全可复制的示例吗?目前,我认为这不会起作用,因为
for
-循环未连接到mtcars表…已更新,以包括
颜色
GRP
数据集的示例。它们当前未连接到mtcars
。不过,我认为他们应该是?复制和粘贴在我的部分。。。。在我的实际脚本中一切正常。尝试一个仍然使用
for
循环的非管道解决方案(即,将每根管道作为自己的obj
打断要清楚,您建议在
kable
之外创建一个循环,在该循环中,我为每一个可能的组行创建一个对象?如果是这样,我将如何在之后将它们全部管道化?我是否需要创建一个列表或类似的东西?您能否提供一个完全可复制的示例?目前我将这可能不起作用,因为
for
-循环未连接到mtcars表…已更新以包括
颜色
GRP
数据集的示例。它们当前未连接到
mtcars
。不过,我认为它们应该是?复制并粘贴到我的部分…在我的实际脚本中一切正常。尝试非管道解决方案ion仍在为
循环使用
(也就是说,把每个管道都分解成自己的obj
要清楚,你建议在
kable
之外创建一个循环,在这个循环中,我为每个可能的组行创建一个对象?如果是,我以后如何将它们全部分解到一起?我需要创建一个列表或类似的东西吗?哇,这看起来很简单。奇怪的是,如果我做了类似的事情,say、 但是这次使用
cell\u spec
,这将需要不同的操作,因为每列只允许一个
cell\u spec
。无论如何,我相信。但是,我想用另一个变量定义的不同颜色为每个单元格着色。我尝试了
ifelse
语句,但我没有实现。听起来你需要这样做问一个不同的问题。这里的解决方案对你有效吗?是的,它有效。谢谢,这看起来很简单。尽管很奇怪,如果我做了类似的事情,比如说,但这次使用
cell\u spec
,这需要做得不同,因为每列只允许一个
cell\u spec
。无论如何,我相信。不过,我想给每个单元格涂上di颜色由另一个变量定义的不同颜色。我尝试了一个
ifelse
语句,但没有成功。听起来你需要问一个不同的问题。这里的解决方案对你有效吗?是的,它有效。谢谢