2017-05-16 2 views
1

RのCSVファイルをインポートすると、カラムの名前が変わります。彼らは "Fe/Cu"から "Fe.Cu"に行きます。しかし、私は列 カラム名がスラッシュの代わりにcsvからR:ドットに変更されます。

colnames(a[12:ncol(a)])=c("Fe/Cu","Fe/Zn","Fe/Ba") 

の名前を変更しようとした ...一つだけcsvファイルで、この神秘的なproblemeを持っているが、何も

任意のアイデアが起こりませんか?

+1

'read.csv'関数呼び出しで' check.names = FALSE'を追加してみてください。 –

+0

列が構文的に有効である方がよいことに注意してください。 ドキュメントから:構文的に有効な名前は、文字、数字、ドットまたは下線の文字で構成され、数字で始まる文字またはドットで始まります。 「.2way」などの名前は有効ではなく、どちらも予約語ではありません。 それ以外の場合は、バッククォートを使用して列を参照する必要があります。 $ Fe.Cuの代わりに$ 'Fe/Cu'のように(ここではバッククォートのようにバッククォートしています) – Asayat

答えて

2

check.names=FALSEcsv.readへの関数呼び出しを使用して、元の名前を取得できるようになります追加します。これは、デフォルトでcsv.readは、列名が@Asayatで記述されているように構文上有効かどうかをチェックするためです。 csv.readドキュメントから

check.names - 論理:TRUEは、その後 、データフレーム内の変数の名前は、彼らが構文的に有効 変数名であることを確認するためにチェックされた場合。必要であれば、それらは になるように(make.namesによって)調整され、また重複がないようにします。

あなたは、あなたが見つけるmake.namesのドキュメントをチェックした場合:

構文的に有効な名前は、文字、数字、ドットまたは 下線文字で構成され、文字やドットではないで始まります数字で が続きます。 ".2way"などの名前は無効で、 の予約語もありません。 @Asayatがコメントしたものは、

です。

0

列のインデックスは、以下のようにcolnames後にする必要があります:

colnames(a)[12:ncol(a)]=c("Fe/Cu","Fe/Zn","Fe/Ba") 
関連する問題