0

I'm attempting to align the contents of a table (kable) containing multiple rows of text in an html Rmarkdown document.

The default table is rendered with the text justified to the left, but aligned to the centre horizontally. See below:

enter image description here

I would like the for the text to be justified to the left (no change), but aligned to the top. Is this possible to achieve using kable in Rmarkdown?

This code below recreates the table above:

```{r, cache=TRUE, echo=FALSE}
column_1 <- c( "Lorem ipsum dolor sit amet, consectetur adipiscing 
elit. Vivamus dolor risus, aliquet at dolor et, tincidunt egestas 
urna.")

column_2 <- c("Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Vivamus dolor risus, aliquet at dolor et, tincidunt egestas urna. Nam 
nec elit vel eros accumsan vulputate. Donec et congue sapien. Morbi 
condimentum fringilla lobortis. Cras eget justo non turpis elementum 
facilisis. Fusce dignissim orci id pretium sagittis. Pellentesque 
dignissim nisi sapien, sit amet maximus nisl ullamcorper ac. Donec elit 
ex, hendrerit sed leo convallis, efficitur bibendum ligula. 
Pellentesque sagittis arcu et condimentum viverra. Mauris at lectus at 
massa ullamcorper ullamcorper. Aliquam quis leo ac eros cursus mattis. 
Praesent pellentesque nunc et diam lacinia, quis cursus purus lacinia. 
Aenean ipsum libero, bibendum non ante 
vel, vehicula consectetur ex. Fusce lobortis odio nec urna dignissim, 
sed elementum ipsum sagittis. Sed mollis, magna in blandit imperdiet, 
dolor quam posuere quam, id iaculis nisl diam sed lorem.")

column_3 <- c("Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Vivamus dolor risus, aliquet at dolor et, tincidunt egestas urna. Nam 
nec elit vel eros accumsan vulputate. Donec et congue sapien. Morbi 
condimentum fringilla lobortis. Cras eget justo non turpis elementum 
facilisis. Fusce dignissim orci id pretium sagittis. Pellentesque 
dignissim nisi sapien, sit amet maximus nisl ullamcorper ac. Donec elit 
ex, hendrerit sed leo convallis, efficitur bibendum ligula. 
Pellentesque sagittis arcu et condimentum viverra. Mauris at lectus at 
massa ullamcorper ullamcorper. Aliquam quis leo ac eros cursus 
mattis.")

test_table <- data_frame(column_1, column_2, column_3) %>%
  kable(caption = "Test table", align = "l") %>% 
  kable_styling(full_width = T) %>%
  column_spec(1, width = "30em") %>%
  column_spec(2, width = "40em") %>%
  column_spec(3, width = "30em")
```

This question appears to trying to solve a similar problem, and the solution involved using Latex. Which isn't an option here...

vengefulsealion
  • 756
  • 11
  • 18

1 Answers1

0

Use the extra-css parameter:

data_frame(column_1, column_2, column_3) %>%
  kable(caption = "Test table", align = "l", format = "html") %>% 
  kable_styling(full_width = T) %>%
  column_spec(1, width = "30em", extra_css = "vertical-align:top;") %>%
  column_spec(2, width = "40em", extra_css = "vertical-align:top;") %>%
  column_spec(3, width = "30em", extra_css = "vertical-align:top;")

enter image description here

Ben
  • 784
  • 5
  • 14