将整个数据框转换为一长列(向量)

Spi*_*ast 1 r

我想将数字(包括 NA)数据框的全部内容转换为一列。实现以下目标的最明智的方法是什么?

>df <- data.frame(C1=c(1,NA,3),C2=c(4,5,NA),C3=c(NA,8,9))
>df
     C1 C2 C3
  1  1  4 NA
  2 NA  5  8
  3  3 NA  9

>x <- mysterious_operation(df)
>x
[1] 1 NA 3 4 5 NA NA 8 9
Run Code Online (Sandbox Code Playgroud)

我想计算这个向量的平均值,所以理想情况下我想删除神秘操作中的 NA - 我正在处理的数据帧非常大,所以这可能是一个好主意。

tyl*_*uRp 5

这里有几种方法purrr

# using invoke, a wrapper around do.call
purrr::invoke(c, df, use.names = FALSE)

# similar to unlist, reduce list of lists to a single vector
purrr::flatten_dbl(df)
Run Code Online (Sandbox Code Playgroud)

两者都返回:

[1]  1 NA  3  4  5 NA NA  8  9
Run Code Online (Sandbox Code Playgroud)