convert tibble in a more readable format

--Hi,

i have this tibble:

> my_list_histo_stats
[[1]]
# A tibble: 3 x 28
    `1p`   `1q`   `2q`   `3p`   `4q`   `5q`   `6q`   `7p`   `7q`   `8q`   `9p`   `9q`  `11p`  `12p`  `12q`  `13q`  `14q`  `15q`  `16q`  `17p`  `17q`  `18q`  `19p`  `20p`  `20q`  `22q`     Xp     Yp
   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
1 2.00   2.00   1.99   2.00   2.00   1.99   2.00   2.00   2.01   2.01   2.00   2.00   2.00   2.00   2.00   2.00   2.00   2.00   2.00   2.00   2.00   1.98   1.99   2.00   2.00   2.00   2      2.03  
2 2.00   1.99   1.98   2.00   2.01   1.98   2.00   1.99   2.02   2.01   2.00   1.99   2.00   2.00   1.98   1.99   2.00   2.00   2.02   2.01   2.00   1.98   1.98   2.01   2.00   2.02   1.99   2.04  
3 0.0490 0.0503 0.0562 0.0525 0.0662 0.0610 0.0758 0.0624 0.0620 0.0515 0.0566 0.0450 0.0555 0.0536 0.0537 0.0458 0.0398 0.0656 0.0727 0.0572 0.0491 0.0747 0.0765 0.0438 0.0503 0.0562 0.0845 0.0592

[[2]]
# A tibble: 3 x 28
    `1p`   `1q`   `2q`   `3p`   `4q`   `5q`   `6q`   `7p`   `7q`   `8q`   `9p`   `9q`  `11p`  `12p`  `12q`  `13q`  `14q`  `15q`  `16q`  `17p`  `17q`  `18q`  `19p`  `20p`  `20q`  `22q`     Xp     Yp
   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
1 2.00   2.00   2.00   2.00   2.00   2.00   1.99   2.00   2.00   2.01   2.00   2.00   2.00   2.00   2.00   1.99   2.00   2.00   2.00   2.00   2.00   1.98   1.99   2.00   2.00   2.00   2      1.98  
2 2.00   1.99   1.98   2.00   2.01   1.99   1.99   1.99   2.01   2.01   2.00   1.99   2.00   1.99   1.98   1.99   2.00   2.00   2.02   2.01   2.00   1.98   1.98   2.01   2.00   2.02   1.99   1.99  
3 0.0490 0.0503 0.0637 0.0525 0.0662 0.0692 0.0956 0.0624 0.0705 0.0515 0.0566 0.0450 0.0600 0.0488 0.0537 0.0575 0.0398 0.0656 0.0727 0.0572 0.0491 0.0747 0.0765 0.0438 0.0503 0.0562 0.0845 0.0927

[[3]]
# A tibble: 3 x 28
    `1p`   `1q`   `2q`   `3p`   `4q`   `5q`   `6q`   `7p`   `7q`   `8q`   `9p`   `9q`  `11p`  `12p`  `12q`  `13q`  `14q`  `15q`  `16q`  `17p`  `17q`  `18q`  `19p`  `20p`  `20q`  `22q`     Xp     Yp
   <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
1 2.00   2.00   1.99   2.00   2.00   1.99   2.00   2.00   2.01   2.01   2.00   2.00   2.00   2.00   2.00   2.00   2.00   2.00   2.00   2.00   2.00   1.98   1.99   2.00   2.00   2.00   2      2.03  
2 2.00   1.99   1.98   2.00   2.01   1.98   2.00   1.99   2.02   2.01   2.00   1.99   2.00   2.00   1.98   1.99   2.00   2.00   2.02   2.01   2.00   1.98   1.98   2.01   2.00   2.02   1.99   2.04  
3 0.0490 0.0503 0.0562 0.0525 0.0662 0.0610 0.0758 0.0624 0.0620 0.0515 0.0566 0.0450 0.0555 0.0536 0.0537 0.0458 0.0398 0.0656 0.0727 0.0572 0.0491 0.0747 0.0765 0.0438 0.0503 0.0562 0.0845 0.0592

is there a way to convert to a readable tabulated text file ? Each block of 3 lines in the tibble correspond to the same sample.

thank you --

It does not look like my_list_histo_stats is a tibble. It looks like a list that contains 3 tibbles .

Try

as_tibble(my_list_histo_stats)

this command seems to be good: that_df <- as.data.frame(rbindlist(my_list_histo_stats, fill = TRUE))
but i need also to group per rows like that:
tibble(group = c("1", "2", "3"), data = my_list_histo_stats) %>% tidyr::unnest(data)

I not understand your data, in particular I am having trouble understanding why the tibbles in my_list_histo_stats have row_numbers.

Could you supply my_list_histo_stats in dput() format?
Thanks

dput(my_list_histo_stats)
list(structure(list(`1p` = c(1.99686486332893, 1.99830861233492, 
0.0489970010768608), `1q` = c(2.00101948694574, 1.99353636277197, 
0.0502502713113512), `2q` = c(1.99492794479394, 1.98487319309025, 
0.0562486255502539), `3p` = c(1.99941540133414, 2.00416559962346, 
0.0525489443573444), `4q` = c(1.99951694107856, 2.00832449270836, 
0.0662034973846798), `5q` = c(1.99388420534657, 1.98369117476627, 
0.0610118400840078), `6q` = c(1.99812638654789, 1.99665860295938, 
0.0757985488587435), `7p` = c(2.00382351515511, 1.99433528536404, 
0.0624141100372394), `7q` = c(2.01425639346133, 2.01825517810924, 
0.0619569095584894), `8q` = c(2.00570519589662, 2.00609166620091, 
0.0515173830035244), `9p` = c(1.9970546155959, 1.9971923294778, 
0.0566128713972978), `9q` = c(1.99507356493066, 1.98710567750329, 
0.0449903791059993), `11p` = c(2.00108630962726, 2.00199781579752, 
0.0555090792020007), `12p` = c(2.00141355879014, 1.99640711205139, 
0.0535531196273217), `12q` = c(1.99849844375775, 1.97914573598857, 
0.0536594509254956), `13q` = c(1.99797909073474, 1.98921679719471, 
0.0457797625199921), `14q` = c(2.00250095669422, 1.99793916688641, 
0.0397766199040718), `15q` = c(1.99625582434999, 2.00112853013216, 
0.0656306032933899), `16q` = c(1.99917675441061, 2.0169223066706, 
0.0726700426257047), `17p` = c(2.00379218670451, 2.01035772918829, 
0.0571988695564686), `17q` = c(1.99811516567898, 1.99578685077037, 
0.0491498177461963), `18q` = c(1.97851469902641, 1.98215751873112, 
0.074703905129944), `19p` = c(1.98772458214061, 1.98000570829772, 
0.076548722135187), `20p` = c(2.00037915772679, 2.01441084976115, 
0.0437686505371446), `20q` = c(1.99970413881542, 1.99671995962154, 
0.0502752980959364), `22q` = c(1.99815999216606, 2.01756721103254, 
0.0562448138908853), Xp = c(2, 1.98502833230045, 0.0845043880269189
), Yp = c(2.02608313729672, 2.03714752678723, 0.059217728781442
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-3L)), structure(list(`1p` = c(1.99686486332893, 1.99830861233492, 
0.0489970010768608), `1q` = c(2.00101948694574, 1.99353636277197, 
0.0502502713113512), `2q` = c(1.99688240811314, 1.98070595764631, 
0.0637139011328598), `3p` = c(1.99941540133414, 2.00416559962346, 
0.0525489443573444), `4q` = c(1.99951694107856, 2.00832449270836, 
0.0662034973846798), `5q` = c(2.00448455434578, 1.9906722880644, 
0.06924203198601), `6q` = c(1.99295582475299, 1.98904339160454, 
0.0955955122345272), `7p` = c(2.00382351515511, 1.99433528536404, 
0.0624141100372394), `7q` = c(2.00420021111573, 2.00562393335177, 
0.0704853616459395), `8q` = c(2.00570519589662, 2.00609166620091, 
0.0515173830035244), `9p` = c(1.9970546155959, 1.9971923294778, 
0.0566128713972978), `9q` = c(1.99507356493066, 1.98710567750329, 
0.0449903791059993), `11p` = c(1.9956469481715, 2.00317768874861, 
0.0600175862690934), `12p` = c(2.00159112697084, 1.99487994692883, 
0.0488425869117989), `12q` = c(1.99849844375775, 1.97914573598857, 
0.0536594509254956), `13q` = c(1.9935448757261, 1.98800489294859, 
0.0575338716003983), `14q` = c(2.00250095669422, 1.99793916688641, 
0.0397766199040718), `15q` = c(1.99625582434999, 2.00112853013216, 
0.0656306032933899), `16q` = c(1.99917675441061, 2.0169223066706, 
0.0726700426257047), `17p` = c(2.00379218670451, 2.01035772918829, 
0.0571988695564686), `17q` = c(1.99811516567898, 1.99578685077037, 
0.0491498177461963), `18q` = c(1.97851469902641, 1.98215751873112, 
0.074703905129944), `19p` = c(1.98772458214061, 1.98000570829772, 
0.076548722135187), `20p` = c(2.00037915772679, 2.01441084976115, 
0.0437686505371446), `20q` = c(1.99970413881542, 1.99671995962154, 
0.0502752980959364), `22q` = c(1.99815999216606, 2.01756721103254, 
0.0562448138908853), Xp = c(2, 1.98502833230045, 0.0845043880269189
), Yp = c(1.98121609348519, 1.98720716735377, 0.0927484998229581
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-3L)), structure(list(`1p` = c(1.99686486332893, 1.99830861233492, 
0.0489970010768608), `1q` = c(2.00101948694574, 1.99353636277197, 
0.0502502713113512), `2q` = c(1.99492794479394, 1.98487319309025, 
0.0562486255502539), `3p` = c(1.99941540133414, 2.00416559962346, 
0.0525489443573444), `4q` = c(1.99951694107856, 2.00832449270836, 
0.0662034973846798), `5q` = c(1.99388420534657, 1.98369117476627, 
0.0610118400840078), `6q` = c(1.99812638654789, 1.99665860295938, 
0.0757985488587435), `7p` = c(2.00382351515511, 1.99433528536404, 
0.0624141100372394), `7q` = c(2.01425639346133, 2.01825517810924, 
0.0619569095584894), `8q` = c(2.00570519589662, 2.00609166620091, 
0.0515173830035244), `9p` = c(1.9970546155959, 1.9971923294778, 
0.0566128713972978), `9q` = c(1.99507356493066, 1.98710567750329, 
0.0449903791059993), `11p` = c(2.00108630962726, 2.00199781579752, 
0.0555090792020007), `12p` = c(2.00141355879014, 1.99640711205139, 
0.0535531196273217), `12q` = c(1.99849844375775, 1.97914573598857, 
0.0536594509254956), `13q` = c(1.99797909073474, 1.98921679719471, 
0.0457797625199921), `14q` = c(2.00250095669422, 1.99793916688641, 
0.0397766199040718), `15q` = c(1.99625582434999, 2.00112853013216, 
0.0656306032933899), `16q` = c(1.99917675441061, 2.0169223066706, 
0.0726700426257047), `17p` = c(2.00379218670451, 2.01035772918829, 
0.0571988695564686), `17q` = c(1.99811516567898, 1.99578685077037, 
0.0491498177461963), `18q` = c(1.97851469902641, 1.98215751873112, 
0.074703905129944), `19p` = c(1.98772458214061, 1.98000570829772, 
0.076548722135187), `20p` = c(2.00037915772679, 2.01441084976115, 
0.0437686505371446), `20q` = c(1.99970413881542, 1.99671995962154, 
0.0502752980959364), `22q` = c(1.99815999216606, 2.01756721103254, 
0.0562448138908853), Xp = c(2, 1.98502833230045, 0.0845043880269189
), Yp = c(2.02608313729672, 2.03714752678723, 0.059217728781442
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-3L)), structure(list(`1p` = c(1.99686486332893, 1.99830861233492, 
0.0489970010768608), `1q` = c(2.00101948694574, 1.99353636277197, 
0.0502502713113512), `2q` = c(1.99492794479394, 1.98487319309025, 
0.0562486255502539), `3p` = c(1.99941540133414, 2.00416559962346, 
0.0525489443573444), `4q` = c(1.99951694107856, 2.00832449270836, 
0.0662034973846798), `5q` = c(1.99388420534657, 1.98369117476627, 
0.0610118400840078), `6q` = c(1.99812638654789, 1.99665860295938, 
0.0757985488587435), `7p` = c(2.00382351515511, 1.99433528536404, 
0.0624141100372394), `7q` = c(2.01425639346133, 2.01825517810924, 
0.0619569095584894), `8q` = c(2.00570519589662, 2.00609166620091, 
0.0515173830035244), `9p` = c(1.9970546155959, 1.9971923294778, 
0.0566128713972978), `9q` = c(1.99507356493066, 1.98710567750329, 
0.0449903791059993), `11p` = c(2.00108630962726, 2.00199781579752, 
0.0555090792020007), `12p` = c(2.00141355879014, 1.99640711205139, 
0.0535531196273217), `12q` = c(1.99849844375775, 1.97914573598857, 
0.0536594509254956), `13q` = c(1.99797909073474, 1.98921679719471, 
0.0457797625199921), `14q` = c(2.00250095669422, 1.99793916688641, 
0.0397766199040718), `15q` = c(1.99625582434999, 2.00112853013216, 
0.0656306032933899), `16q` = c(1.99917675441061, 2.0169223066706, 
0.0726700426257047), `17p` = c(2.00379218670451, 2.01035772918829, 
0.0571988695564686), `17q` = c(1.99811516567898, 1.99578685077037, 
0.0491498177461963), `18q` = c(1.97851469902641, 1.98215751873112, 
0.074703905129944), `19p` = c(1.98772458214061, 1.98000570829772, 
0.076548722135187), `20p` = c(2.00037915772679, 2.01441084976115, 
0.0437686505371446), `20q` = c(1.99970413881542, 1.99671995962154, 
0.0502752980959364), `22q` = c(1.99815999216606, 2.01756721103254, 
0.0562448138908853), Xp = c(2, 1.98502833230045, 0.0845043880269189
), Yp = c(2.02608313729672, 2.03714752678723, 0.059217728781442
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-3L)), structure(list(`1p` = c(1.99686486332893, 1.99830861233492, 
0.0489970010768608), `1q` = c(2.00101948694574, 1.99353636277197, 
0.0502502713113512), `2q` = c(1.99492794479394, 1.98487319309025, 
0.0562486255502539), `3p` = c(1.99941540133414, 2.00416559962346, 
0.0525489443573444), `4q` = c(1.99951694107856, 2.00832449270836, 
0.0662034973846798), `5q` = c(1.99388420534657, 1.98369117476627, 
0.0610118400840078), `6q` = c(1.99812638654789, 1.99665860295938, 
0.0757985488587435), `7p` = c(2.00382351515511, 1.99433528536404, 
0.0624141100372394), `7q` = c(2.01425639346133, 2.01825517810924, 
0.0619569095584894), `8q` = c(2.00570519589662, 2.00609166620091, 
0.0515173830035244), `9p` = c(1.9970546155959, 1.9971923294778, 
0.0566128713972978), `9q` = c(1.99507356493066, 1.98710567750329, 
0.0449903791059993), `11p` = c(2.00108630962726, 2.00199781579752, 
0.0555090792020007), `12p` = c(2.00141355879014, 1.99640711205139, 
0.0535531196273217), `12q` = c(1.99849844375775, 1.97914573598857, 
0.0536594509254956), `13q` = c(1.99797909073474, 1.98921679719471, 
0.0457797625199921), `14q` = c(2.00250095669422, 1.99793916688641, 
0.0397766199040718), `15q` = c(1.99625582434999, 2.00112853013216, 
0.0656306032933899), `16q` = c(1.99917675441061, 2.0169223066706, 
0.0726700426257047), `17p` = c(2.00379218670451, 2.01035772918829, 
0.0571988695564686), `17q` = c(1.99811516567898, 1.99578685077037, 
0.0491498177461963), `18q` = c(1.97851469902641, 1.98215751873112, 
0.074703905129944), `19p` = c(1.98772458214061, 1.98000570829772, 
0.076548722135187), `20p` = c(2.00037915772679, 2.01441084976115, 
0.0437686505371446), `20q` = c(1.99970413881542, 1.99671995962154, 
0.0502752980959364), `22q` = c(1.99815999216606, 2.01756721103254, 
0.0562448138908853), Xp = c(2, 1.98502833230045, 0.0845043880269189
), Yp = c(2.02608313729672, 2.03714752678723, 0.059217728781442
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-3L)), structure(list(`1p` = c(1.99686486332893, 1.99830861233492, 
0.0489970010768608), `1q` = c(2.00101948694574, 1.99353636277197, 
0.0502502713113512), `2q` = c(1.99492794479394, 1.98487319309025, 
0.0562486255502539), `3p` = c(1.99937741466501, 2.00142442587258, 
0.0648650224117492), `4q` = c(1.99951694107856, 2.00832449270836, 
0.0662034973846798), `5q` = c(1.99388420534657, 1.98369117476627, 
0.0610118400840078), `6q` = c(1.99812638654789, 1.99665860295938, 
0.0757985488587435), `7p` = c(1.99712964871274, 2.01385797556683, 
0.0595051257957674), `7q` = c(2.01425639346133, 2.01825517810924, 
0.0619569095584894), `8q` = c(2.00570519589662, 2.00609166620091, 
0.0515173830035244), `9p` = c(1.9970546155959, 1.9971923294778, 
0.0566128713972978), `9q` = c(1.99507356493066, 1.98710567750329, 
0.0449903791059993), `11p` = c(2.00108630962726, 2.00199781579752, 
0.0555090792020007), `12p` = c(2.00141355879014, 1.99640711205139, 
0.0535531196273217), `12q` = c(1.99849844375775, 1.97914573598857, 
0.0536594509254956), `13q` = c(1.99797909073474, 1.98921679719471, 
0.0457797625199921), `14q` = c(2.00250095669422, 1.99793916688641, 
0.0397766199040718), `15q` = c(1.99142776353442, 1.99402480157371, 
0.0603266459396244), `16q` = c(1.99917675441061, 2.0169223066706, 
0.0726700426257047), `17p` = c(2.00379218670451, 2.01035772918829, 
0.0571988695564686), `17q` = c(1.99811516567898, 1.99578685077037, 
0.0491498177461963), `18q` = c(1.97851469902641, 1.98215751873112, 
0.074703905129944), `19p` = c(1.98772458214061, 1.98000570829772, 
0.076548722135187), `20p` = c(2.00037915772679, 2.01441084976115, 
0.0437686505371446), `20q` = c(1.99970413881542, 1.99671995962154, 
0.0502752980959364), `22q` = c(1.98833762260077, 1.99200075869713, 
0.0719233835808323), Xp = c(2, 1.98502833230045, 0.0845043880269189
), Yp = c(2.02608313729672, 2.03714752678723, 0.059217728781442
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-3L)))

Does

library(tidyverse)
combined <- bind_rows(my_list_histo_stats)
combined

do what you want?

yes this is what i want, i obtain that:

samples  tests    1p   1q    2q    3p    4q    5q    6q   7p    7q    8q    9p    9q   11p   12p   12q   13q  14q  15q   16q   17p   17q   18q   19p   20p  20q   22q    Xp    Yp
1  H9P18 median 1.997 2.00 1.995 1.999 2.000 1.994 1.998 2.00 2.014 2.006 1.997 1.995 2.001 2.001 1.998 1.998 2.00 1.99 1.999 2.004 1.998 1.979 1.988 2.000 2.00 1.988 2.000 2.026
2  H9P18   mean 1.998 1.99 1.985 2.001 2.008 1.984 1.997 2.01 2.018 2.006 1.997 1.987 2.002 1.996 1.979 1.989 2.00 1.99 2.017 2.010 1.996 1.982 1.980 2.014 2.00 1.992 1.985 2.037
3  H9P18     sd 0.049 0.05 0.056 0.065 0.066 0.061 0.076 0.06 0.062 0.052 0.057 0.045 0.056 0.054 0.054 0.046 0.04 0.06 0.073 0.057 0.049 0.075 0.077 0.044 0.05 0.072 0.085 0.059
4  H9 median 1.997 2.00 1.995 1.999 2.000 1.994 1.998 2.00 2.014 2.006 1.997 1.995 2.001 2.001 1.998 1.998 2.00 1.99 1.999 2.004 1.998 1.979 1.988 2.000 2.00 1.988 2.000 2.026
5  H9   mean 1.998 1.99 1.985 2.001 2.008 1.984 1.997 2.01 2.018 2.006 1.997 1.987 2.002 1.996 1.979 1.989 2.00 1.99 2.017 2.010 1.996 1.982 1.980 2.014 2.00 1.992 1.985 2.037
6  H9     sd 0.049 0.05 0.056 0.065 0.066 0.061 0.076 0.06 0.062 0.052 0.057 0.045 0.056 0.054 0.054 0.046 0.04 0.06 0.073 0.057 0.049 0.075 0.077 0.044 0.05 0.072 0.085 0.059


Okay, with the actual data I think the code below does what you want. I used rbindlist() but @startz's bind_rows() should work just as well.

If I understand you you need to "tag" each set of 3 rows with a "sample" identifier and each row within that set of rows with a stats ID.

Starting with your data list named "dat1", I converted it to a data. table (You may need to install {data.table}
and created two new variables that I hope gives you what you need. Oh, I just tidied up the names using clean_names() from {janitor }

You should just need to replace snams <- LETTERS[1:3] with the actual sample names.


## Load extra packages
library(data.table)
library(janitor)

DDD <- as.data.table(rbindlist(dat1)) |>  clean_names()

snams <- LETTERS[1:3]
tnams <- c("median", "mean", "sd")


DDD[,  samples := rep(snams, each = 3, times = 2)]
DDD[,  tests := rep(tnams, times = 6)]

DDD