data.frameにカラム名を指定するには、スペースを変更します「」
-
25-09-2019 - |
質問
レッツは、私はそうのように、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" の "ラベル1" ます。
解決
あなたにはありません。
スペースに対処することができませんでした - あなたは形式を望むスペースを持つあなたはdf$column.1
を使用するときに遊びに来て識別子の要件を満たしていないでしょう。だから、詳細についてはmake.names()
機能や例を参照してください。
> make.names(c("Foo Bar", "tic tac"))
[1] "Foo.Bar" "tic.tac"
>
他のヒント
あなたは(だけでなく、check.names = FALSE
のように)data.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
から:
<時間> あなたがA構文的に有効な名前は、文字、数字、文字または数字が続いていないドットのドットまたは下線文字と開始から構成されています。こうした「.2way」などの名前は有効ではありません、どちらも予約語ではない。
すべての無効な文字が "
.
" に変換されます。
$
を使用して「無効」の名前で変数をサブセットする必要がある場合は、また、あなたは、バッククォートの`
を使用することができます。たとえばます:
df$`Label 1`
は、
あなたの例を使用して、すなわち、スペースを含むために、既存のデータフレーム名を変更することができます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作成時ではなく、TO-行うのと同じ列名変更時の自動変換の列名に私にはかなり矛盾しているようだが、Rは、現時点ではどのように動作するかのthatsます。
names(df)<-c('Label 1','Label 2)