如何将数据框的所有列转换为 R 中的单个列表?

How can all columns of a dataframe be converted into a single list in R?

这是一个模糊的请求。我正在尝试在 flextable 中为 RMarkdown 文档进行条件格式化,长话短说,我需要一个 list 从数据框派生的值。

这是一个数据帧的例子:

df <- tibble(COL_1 = c(1, 2, 3),
             COL_2 = c("A", "B", "C"),
             COL_3 = c("Peach", "Plum", "Pear"))

> df
# A tibble: 3 x 3
  COL_1 COL_2 COL_3
  <dbl> <chr> <chr>
1     1 A     Peach
2     2 B     Plum 
3     3 C     Pear 

我正在寻找实现以下目标的代码(我不知道值的类型):

"1", "2", "3", "A", "B", "C", "Peach", "Plum", "Pear"

有人有解决办法吗?如果它对 dplyr 友好,则加分。

此外,如果有人有一种简洁明了的方法来格式化 flextable 中许多列中许多值的颜色和背景,我将不胜感激。我怀疑我正在寻求的解决方案是最优的。

unlist 会有帮助

df %>% unlist %>% as.vector
[1] "1"     "2"     "3"     "A"     "B"     "C"     "Peach" "Plum"  "Pear" 

另一种选择是更改为矩阵并折叠成具有 c 的向量。

library(magrittr)

df %>% as.matrix() %>% c
#[1] "1"     "2"     "3"     "A"     "B"     "C"     "Peach" "Plum"  "Pear" 

我们可能 stackpull

library(dplyr)
stack(df) %>% 
   pull(values)
#[1] "1"     "2"     "3"     "A"     "B"     "C"     "Peach" "Plum"  "Pear"