将所有列与tidyr联合起来

时间:2017-08-26 19:56:09

标签: r dataframe tidyverse

我想将一个tibble中的所有列合并为一个以便以后处理。每当我尝试这样做时,我都会收到错误

  

if(!after)c(values,x)中的错误否则if(在&gt; = lengx之后)c(x,values)else c(x [1L:after],:缺少值,其中需要TRUE / FALSE < / p>

tidyr:unite documentation表示您可以通过不指定任何列来执行此操作。这是一个玩具示例:

ex <- as_tibble(matrix(rnorm(20), ncol = 4))
ex
unite(ex, 'new')

我只是错过了一些整洁的微妙或......?

2 个答案:

答案 0 :(得分:2)

所以,我相信你需要指定列,即使你想要组合所有列。

要做到这一点,你可以使用1:x,其中x是最后一个列号,你不需要全部写出来。例如,在您的代码中,您可以输入:

unite(ex, new, 1:4, sep="")

请记住将sep =参数放入 - sep =&#34;&#34;意味着它们会在没有间隙的情况下连接在一起,但是sep =&#34;。&#34;意味着两者之间会有一个点。

希望仍然有用!

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

答案 1 :(得分:2)

怎么样

df <- ex %>%
unite(ex,1:ncol(ex),sep=" ")