データフレームを列名で並べ替えるときに、私はいくつかの奇妙な振る舞いを観察しています。基本的に、データフレームに列が1つしかない場合は、列の名前が失われますが、列が複数ある場合は発生しません。このサンプルコードである:データフレームをR列で並べる
df <- data.frame(c("1", "2", "3"), c("4", "5", "6"), c("7", "8", "9"))
colnames(df) <- c("A", "C", "B")
df <- data.frame(df[,order(colnames(df))])
print(colnames(df))
df <- data.frame(c("1", "2", "3"))
colnames(df) <- c("A")
df <- data.frame(df[,order(colnames(df))])
print(colnames(df))
コード、データフレームdf
の最初の部分で、その列を保持が、第2の部分では、カラム名を失います。
明らかに1つの列しかない場合は、列の数を確認して名前を戻すことができますが、悪い習慣のように聞こえることは明らかです。
問題を解決する方法を知っている人はいますか?
良い古い 'ドロップ'問題。 –
この場合のより良い方法は、リスト構文を使用することです: 'df [order(colname(df))]' 'df [order(colnames(df)]]は単一の列data.frameのインスタンス内のリスト構造を削除しますが、リスト構造(および関連する名前)は保持します。 – lmo