2016-06-15 8 views
0

次の例では、unite_()の出力とunite()の出力に追加の列があるのはなぜですか?ここでtidyrの `unite_`と` unite`を使用した余分な列

library(tidyr) 

x1 <- data.frame(Sample=c("A", "B"), "1"=c("-", "y"), 
       "2"=c("-", "z"), "3"=c("x", "a"), check.names=F) 
# Sample 1 2 3 
# 1  A - - x 
# 2  B y z a 

我々は、所望の出力を参照してください。

unite(x1, mix, 2:ncol(x1), sep=",") 
# Sample mix 
# 1  A -,-,x 
# 2  B y,z,a 

なぜここに追加の列(1列)はありますか?デフォルトでは、unite_()が使用する列を削除します。

unite_(x1, "mix", 2:ncol(x1), sep=",") 
# Sample 1 mix 
# 1  A - -,-,x 
# 2  B y y,z,a 

注:tidyrバージョン0.5.1

答えて

1

構文は2つの用法間でわずかに異なります

#unite(data, col, ..., sep = "_", remove = TRUE) 
#unite_(data, col, from, sep = "_", remove = TRUE) 

unite_ヘルプページから、fromオプションがあります「文字列としての既存列の名前」と定義されています。

列番号とは対照として使用列名は、所望の結果が得られた:

unite_(x1, "mix", names(x1[,2:ncol(x1)]), sep=",") 
# Sample mix 
#1  A -,-,x 
#2  B y,z,a 
関連する問題