2017-08-26 51 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=" ")