2017-06-25 3 views
1

R Code in Rmarkdown Datei hinzufügen:R - knitr: Kable - einzelne Header entfernen und einzelne Header auf mehrere Spalten

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)) 

Ausgang: FlexDashBoard Kable - Dataframe as Table

PROBLEM: Ich möchte nur Header auf kombinierten Spalten dh Gruppe1 , Group2 usw. Und ich möchte Header auf einzelnen Spalten entfernen, dh col1, col2 usw.

Gibt es eine Möglichkeit, dies mit Dataframe, HTML/Javascript, Rmarkdown oder einem beliebigen R-Paket zu tun?

Antwort

1

Sie sollten sich mit regulären Ausdrücken und der gsub-Funktion vertraut machen, wenn Sie solche Probleme häufiger bekommen.

hier ist eine Lösung, die erste Zeile die letzte Zeile des Codes von „x < -“ enhanced ist

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 wie folgt funktioniert: auf den ersten Parameter für ein Spiel suchen, ersetzen Sie es durch die zweitens und tue alles zu der Variablen, die als dritter Parameter vorgesehen ist. Der Punkt-Stern (. *) Innerhalb des ersten Parameters besagt, dass jeder Typ und jede Anzahl von Zeichen folgen kann, bevor im dritten Parameter das Schließen folgt. Der Algorithmus ist gierig und versucht die längste übereinstimmende Zeichenfolge zu finden. Da nur einer in diesem Eingabeparameter vorhanden ist, funktioniert dies hier.

+0

Danke. Ich kenne Regex (Grundlagen). Was ich kämpfe, ist Rmd-Datei generiert HTML-Datei. Und Sie verwenden diese HTML-Datei, um Regex richtig anzuwenden? – urwaCFC

+1

yep, das ist im Grunde, wie es _can_ arbeiten kann, je nachdem, was Sie wollen und wie Sie es tun. – Jan

Verwandte Themen