web-dev-qa-db-ja.com

data.frameで列名を指定すると、スペースが "。"に変わります。

次のようなdata.frameがあるとします。

x <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10)
df <- data.frame("Label 1"=x,"Label 2"=rnorm(100))

頭(df、3)

戻り値:

  Label.1    Label.2
1       1  1.9825458
2       2 -0.4515584
3       3  0.6397516

列名のピリオドでスペースを自動的に置き換えるのをRに停止させるにはどうすればよいですか?つまり、「Label.1」ではなく「Label 1」です。

31

あなたはしません。

スペースが必要な場合、フォーマットは_df$column.1_を使用したときに再生される識別子の要件を満たさないため、スペースに対応できません。詳細または例については、make.names()関数を参照してください。

_> make.names(c("Foo Bar", "tic tac"))
[1] "Foo.Bar" "tic.tac"  
>                                              
_
8

check.names = FALSEdata.frameに設定することができます(およびread.tableにも):

df <- data.frame("Label 1" = 1:3, "Label 2" = rnorm(3), check.names = FALSE)

戻り値:

  Label 1    Label 2
1       1  0.2013347
2       2  1.8823111
3       3 -0.5233811

?data.frameから:

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


?make.namesから:

構文的に有効な名前は、文字、数字、ドットまたは下線文字で構成され、文字またはドットで始まり、その後に数字が続きません。 「.2way」などの名前は無効であり、予約語でもありません。

無効な文字はすべて「.」に変換されます


また、$を使用して「無効な」名前で変数をサブセット化する必要がある場合は、バックティック`を使用できます。例えば:

df$`Label 1`
60

スペースを含むように既存のデータフレーム名を変更できます(例を使用して)

x <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10)
df <- data.frame("Label 1"=x,"Label 2"=rnorm(100))
colnames(df) <- c("Label 1", "Label 2")
head(df, 3)

戻り値

  Label 1    Label 2
1       1  0.2013347
2       2  1.8823111
3       3 -0.5233811

$演算子を使用して列にアクセスできます。二重引用符を使用するだけです。

df$"Label 2"[1:3]

戻り値

[1]  0.2013347  1.8823111 -0.5233811

Data.frameの作成時に列名を自動変換することは、私にはかなり矛盾しているようですが、列名の変更中に同じことを行うわけではありませんが、現時点ではRが機能しています。

5
Aaron Statham
names(df)<-c('Label 1','Label 2)
0
Tanmay