2017-05-05 5 views
0

変数をカラム名として使用してデータフレームからカラムを選択しようとしていますが、カラム名がエスケープされているという問題があります。私はそれを行うためのいくつかの回避策があります。私のコードを少し変更する必要があります。とにかく私は周りを見回しています。誰かがこのような奇妙なケースの解決策を知っていたのか不思議です。Rサブセットdataframe列のカラム名がエスケープされたとき

私のデータセットは実際には時系列のリストです(私はいくつかの演算の後に構成します)、これはおもちゃの例になります。

df <- list(`01/19/17`=seq(1,10), `01/20/17`=seq(2,11)) 
> df 
$`01/19/17` 
[1] 1 2 3 4 5 6 7 8 9 10 

$`01/20/17` 
[1] 2 3 4 5 6 7 8 9 10 11 

私がしたいので、私は、列名にエスケープ `入れていないが、彼らはプロセスからの日数として来るので、私は、データセットを構築するために従ってください。

私は列の名前を知っている場合、私はこのようにアクセスすることができ、

df$`01/19/17` 

私は、変数を使用したい場合は、例えば見回しhere私は

`$`(df, `01/19/17`) 

、私はこのような何かにそれを書き換えることができご覧くださいしかし、私は、このよう

> name1 <- `01/19/17` 
Error: object '01/19/17' not found 

し、それを割り当てた場合、私はNULLを取得し、この他の方法で、

を変数に代入することはできません
> name1 <- "01/19/17" 
> `$`(df, name1) 
NULL 

私が言うように、例えば次のような回避策があります。系列のリスト内のすべての列名を変更しますが、私は知りたいと思います。どうもありがとうございます。

+0

あなたはNULLを取得あなたはそれがにISN df' 'の変数として' name1'にアクセスしようとしているので、 't。名前を使用するには '['を使用する必要があります – Sotos

答えて

1

あなたはキーが文字列である場合でも、括弧ではなく$にアクセスすることができます。

df <- list(`01/19/17`=seq(1,10), `01/20/17`=seq(2,11)) 
name1 <- "01/19/17" 

df[[name1]] 
# [1] 1 2 3 4 5 6 7 8 9 10 
+0

これを入力しただけです;) –

関連する問題