2016-10-24 14 views
1

またはquantile()のように複数の行を返す関数を使用してdata.tableに集計を行いたいとします。これまでのやり方は次のとおりです。集計後の結果のdata.table列の名前付けR

library(data.table) 
x = as.data.table(iris) 
x[, as.list(c(summary(Sepal.Length), summary(Sepal.Width))), by = Species] 

これは機能しますが、結果として任意の列名になります。長さが12のベクトルmyColumnNamesがある場合、次の行にsetnamesを使用せずに、このベクトルの後に新しい列の名前を設定するにはどうすればよいですか?

私の "明らかな"試みでは、x[, myColumnNames = as.list(c(summary(Sepal.Length), summary(Sepal.Width))), by = Species]が失敗しました。何か案は?

+2

どのように 'のx [、setNamesについて(as.list(C(サマリー(Sepal.Length)、要約(Sepal.Width)))、myColumnNames)=種によって、あります] ' – akrun

+1

@akrunは' data.table :: setnames'で名前を設定することができます。例えば、 'setnames(y、2:13、myColumnNames)'のように、 'y'はあなたの行の結果です。 – nicola

+1

@akrunあなたのソリューションは完璧に動作します、ありがとう!投稿してください、私は正しいasnwerとしてそれを受け入れることができます。 @nicola '2:13'のようなインデックスで遊ぶのを避けるために、コマンドの後に' setnames() 'を避けたかった。 – GerasimosPanagiotakopoulos

答えて

2

1つのオプションは、setNames

x[, setNames(as.list(c(summary(Sepal.Length), 
     summary(Sepal.Width))), myColumnNames), by = Species] 
+0

魅力的な作品!もっと多くの選択肢があることを暗示していますか? – GerasimosPanagiotakopoulos

+0

@GerasimosPanagiotakopoulos第2のオプションは@nicolaとコメントされた 'setnames'です – akrun

関連する問題