R 每N行使用“分组/打包”;“按行打包”;可食用的

R 每N行使用“分组/打包”;“按行打包”;可食用的,r,tidyverse,kable,kableextra,R,Tidyverse,Kable,Kableextra,我尝试将向量与kable中的“pack_rows”(或“group_rows”-以任何可行的方式)结合使用,以一致地“分组”预定义数量的行 我有一个名为“刺激列表”的字符向量,按字母顺序排列,包含许多单独项目的名称(例如“锚”、“苹果”、“烟灰缸”)——太多了,无法逐一定义。对于每个单独的项目,我在一个单独的df中有6行相应的数据(也按字母顺序排列)。我想将所有6行数据分组或打包到它们对应的单个项目标签下。我期望的输出如下所示: col1 col2 col

我尝试将向量与kable中的“pack_rows”(或“group_rows”-以任何可行的方式)结合使用,以一致地“分组”预定义数量的行

我有一个名为“刺激列表”的字符向量,按字母顺序排列,包含许多单独项目的名称(例如“锚”、“苹果”、“烟灰缸”)——太多了,无法逐一定义。对于每个单独的项目,我在一个单独的df中有6行相应的数据(也按字母顺序排列)。我想将所有6行数据分组或打包到它们对应的单个项目标签下。我期望的输出如下所示:

            col1    col2      col3
anchor
            row 1   of data   for anchor
            row 2   of data   for anchor
            row 3   of data   for anchor
            row 4   of data   for anchor
            row 5   of data   for anchor
            row 6   of data   for anchor
apple
            row 1   of data   for apple
            row 2   of data   for apple
            row 3   of data   for apple
            row 4   of data   for apple
            row 5   of data   for apple
            row 6   of data   for apple
and so on...
但由于我不知道如何定义要分组的行数,我得到了以下结果:

            col1    col2      col3
anchor
            row 1   of data   for anchor
apple
            row 2   of data   for anchor
ashtray
            row 3   of data   for anchor
balloon
            row 4   of data   for anchor
banana
            row 5   of data   for anchor
barrel
            row 6   of data   for anchor
basket
            row 1   of data   for apple
bear
            row 2   of data   for apple
and so on...
由于数据顺序正确,我只需要告诉pack_行在每第6行执行其工作,而不是每一行。我目前拥有的代码:

    b %>%
      kable("latex", longtable = T, booktabs = T, linesep = c("", "", "", "", "", "\\addlinespace")) %>%
      kable_styling(bootstrap_options = c("striped","condensed")) %>%
      kable_styling(latex_options = c("repeat_header"), font_size = 6) %>%
      add_header_above(c(" " = 1, "Familiarity" = 2, "Visual Complexity" = 2, 
                         "Colour Diagnosticity" = 2, "Mental Imagery Agreement" = 2)) %>%
      pack_rows(index = table(a))
感谢您的帮助


reprex:

刺激物清单:

a <- structure(list(stim = c("anchor", "apple", "ashtray", "balloon", 
"banana", "barrel", "basket", "bear", "bell", "belt")), row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))

a你的
a
代表10种不同的
stim
s,而你的
b
似乎只看其中两种(
anchor
apple
)。此外,
table(a)
只返回大量
1
s,因此
kable
一次只对一行进行分组

我们需要的机制是,它能够以某种方式识别
主播1照片颜色中的
主播
,以提取该颜色。如果在早期生成的
b
中有一种方法可以在不使用正则表达式的情况下执行此操作,那么最好在那里执行此操作,因为如果执行不正确,正则表达式可能会带来问题

如果我们假设所有的
anchor[0-9].
照片都是并发的(对于其他
stim
s也一样),那么我们可以这样做:

表格(gsub(“[0-9].*”,“”,b$照片))
#锚苹果
#      6      4 
这是我们可以传递给
pack\u rows
的内容

为了简单起见,我将演示如何使用html引擎,它应该与您的
“latex”
输出相同

b%>%
kable(“html”,longtable=T,booktab=T,linesep=c(“,”,“,”,“,”,“\\addlinespace”))%%
kable_样式(引导选项=c(“条纹”、“浓缩”))%>%
kable_样式(latex_选项=c(“重复_标题”),字体大小=6)%>%
在上面添加标题(c(“”=1,“熟悉度”=2,“视觉复杂性”=2,
“颜色诊断性”=2,“心理意象一致性”=2))%>%
包装行(索引=表格(gsub(“[0-9].*”,“”,b$photo)))

这工作做得很好!非常感谢。为可怜的reprex感到抱歉,我只是抓取了每个变量的前10行,没有注意到不匹配。
b <- structure(list(Photograph = c("anchor1-photo-colour", "anchor1-photo-grey", 
"anchor2-photo-colour", "anchor2-photo-grey", "anchor3-photo-colour", 
"anchor3-photo-grey", "apple1-photo-colour", "apple1-photo-grey", 
"apple2-photo-colour", "apple2-photo-grey"), Fam_Mean = c(3.55, 
2.97, 3.3, 2.81, 3.52, 3.1, 4.79, 4.85, 4.95, 4.4), Fam_SD = c(1.32, 
1.52, 1.56, 1.57, 1.33, 1.52, 0.49, 0.49, 0.22, 0.88), VisCom_Mean = c(2.95, 
2.81, 3.45, 3, 2.4, 2.35, 3.1, 2.19, 3, 2.4), VisCom_SD = c(1.12, 
0.93, 1.23, 0.97, 0.88, 1.09, 1.14, 1.08, 0.97, 0.99), ColDia_Mean = c(2.81, 
NaN, 3.5, NaN, 2.7, NaN, 3.43, NaN, 3.5, NaN), ColDia_SD = c(1.21, 
NA, 1.19, NA, 1.3, NA, 1.08, NA, 1.32, NA), MenIma_Mean = c(4.05, 
3.95, 3.75, 3.52, 3.8, 4.25, 4.15, 3.05, 3.76, 2.75), MenIma_SD = c(1.05, 
0.89, 1.25, 1.33, 1.01, 0.79, 0.88, 1.23, 1.04, 1.45)), row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))