使用 tidyr 将 tibble 中的所有列合并

She*_*ant 5 r dataframe tidyverse

我想将小标题中的所有列合并为一列以供以后处理。每当我尝试执行此操作时,都会收到错误

if (!after) c(values, x) else if (after >= lengx) c(x, values) else c(x[1L:after], : 在需要 TRUE/FALSE 的情况下缺少值

tidyr :unite 文档说您可以通过不指定任何列来做到这一点。这是一个玩具示例:

ex <- as_tibble(matrix(rnorm(20), ncol = 4))
ex
unite(ex, 'new')
Run Code Online (Sandbox Code Playgroud)

我只是错过了一些 tidyverse 的微妙之处还是……?

CER*_*CER 5

怎么样

df <- ex %>%
unite(ex,1:ncol(ex),sep=" ") 
Run Code Online (Sandbox Code Playgroud)


Sam*_*man 3

因此,我相信即使您想组合所有列,也需要指定列。

为此,您可以只使用 1:x,其中 x 是最后一列编号,无需将它们全部写出。例如,在您的代码中您可以输入:

unite(ex, new, 1:4, sep="")
Run Code Online (Sandbox Code Playgroud)

请记住也要放入 sep= 参数 - sep="" 意味着它们将无间隙地连接在一起,但 sep="." 意味着中间会有一个点。

希望仍然有用!

编辑:为了更轻松地使用列号而不是名称,您可以使用 ncol() 查找要指定的列数,例如 ncol(ex) 在您的示例中返回 4。