2017-06-25 2 views
1

code R dans le fichier Rmarkdown:R - knitr: Kable - la suppression des en-têtes individuels et en ajoutant en-tête unique sur plusieurs colonnes

col1 <- c("dummydata","dummydata","dummydata") 
col2 <- c("dummydata","dummydata","dummydata") 
col3 <- c("dummydata","dummydata","dummydata") 
col4 <- c("dummydata","dummydata","dummydata") 
col5 <- c("dummydata","dummydata","dummydata") 
col6 <- c("dummydata","dummydata","dummydata") 
col7 <- c("dummydata","dummydata","dummydata") 
col8 <- c("dummydata","dummydata","dummydata") 

df1 <- data.frame(col1,col2,col3,col4,col5,col6,col7,col8) 

kable(df1, format="html",table.attr='class="myTable"') %>% 
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>% 
add_header_above(c("Group1" = 2, "Group2" = 2,"Group3" = 2, "Group4" = 2)) 

Sortie: FlexDashBoard Kable - Dataframe as Table

QUESTION: Je ne veux que les en-têtes sur des colonnes combinées iE Groupe1 , Group2, etc Et je veux supprimer les en-têtes sur les colonnes individuelles, par exemple col1, col2 etc

Y at-il un moyen de le faire en utilisant dataframe, html/javascript, Rmarkdown ou tout paquet R?

Répondre

1

Vous devriez vous familiariser avec les expressions régulières et la fonction gsub si vous vivez ces problèmes plus souvent.

ici est une solution, la première ligne est votre dernière ligne de code amélioré par « x < - »

x <- kable(df1, format="html",table.attr='class="myTable"') %>% 
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive")) %>% 
add_header_above(c("Group1" = 2, "Group2" = 2,"Group3" = 2, "Group4" = 2)) 

gsub("</th></tr><tr>.*</thead>","</thead>",x) 

gsub fonctionne comme suit: comparer un match au premier paramètre, le remplacer par le deuxième et faire tout cela à la variable providided comme troisième paramètre. L'étoile de point (. *) Dans le premier paramètre indique que n'importe quel type et nombre de caractères peuvent suivre avant que la fermeture suit dans le troisième paramètre. L'algorithme est gourmand, c'est-à-dire qu'il cherche la chaîne la plus longue. Comme il n'y en a qu'un dans ce paramètre d'entrée, cela fonctionne bien ici.

+0

Merci. Je connais réellement regex (les bases). Ce que je suis aux prises avec est le fichier Rmd génère le fichier html. Et vous utilisez ce fichier html pour appliquer correctement regex? – urwaCFC

+1

Oui, c'est comme ça que ça marche, ça dépend de ce que vous voulez et comment vous le faites. – Jan