2017-08-26 36 views
1

我想统一所有的列在一个tibble到一个为以后处理。每当我尝试这样做,我得到错误联合所有tibble列与tidyr

错误if(!after)c(values,x)else if(after> = lengx)c(x,values)else c(x [1L :后]:缺少其中TRUE/FALSE所需值

tidyr:unite documentation说,你可以不指定任何列做到这一点这里的玩具,例如:

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

我只是缺少一些tidyverse微妙或...?

+1

你可以使用'dplyr ::一切()'引用列,例如'as_tibble(matrix(rnorm(20),ncol = 4))%>%unite(new,everything())',尽管这一切似乎都是一个可怕的想法。 – alistaire

+0

...虽然文档似乎过时了。它可能是rlang切换的产物,但如果不存在,不管值得一个GitHub问题。 – alistaire

回答

1

所以,我相信你需要指定列,即使你想把它们全部结合起来。

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

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

记得将在九月=参数,以及 - 九月=“”表示,他们会一起无间隙地加入,但九月=“”。意味着两者之间会有一个点。

希望仍然有用!

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

0

如何

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