data.frame内data.frameの列を参照するには?
質問
私は一緒に他のdata.frames(以下に示す)の数を組み合わせることによって作成series_to_plot.df呼び出さdata.frameを有します。私は今、私はそれらをプロットすることができますので、これらのそれぞれからわずか.mm列を引き出したいです。 (... p3c4.mmなど、例えばp3c3.mm)各data.frameの第3列を引き出したいが、私はをループせずに、オブジェクト内のすべてのdata.framesのためにこれを行う方法を見ることができない私はそう名前。これは可能でしょうか?
私はちょうど1セット引き出すことができます。例えばをseries_to_plot.df [[3]]と他によって
series_to_plot.df [[10]](それはベクトルのリストだけがあるので...)と私はseries_to_plot.dfます$ p3c3.mmを直接参照することができますが、全てミリメートルの各データからを含むベクトルを取得するためのコマンドがあります。フレーム? series_to_plot.df [、3 [3]それは[.data.frame
にエラーを返す(series_to_plot.df、3 [3]):未定義の列が選択された
series_to_plot.df
p3c3.rd p3c3.day p3c3.mm p3c3.sd p3c3.n p3c3.noo p3c3.no_NAs
1 2010-01-04 0 0.1702531 0.04003364 7 1 0
2 2010-01-06 2 0.1790594 0.04696674 7 1 0
3 2010-01-09 5 0.1720404 0.03801756 8 0 0
p3c4.rd p3c4.day p3c4.mm p3c4.sd p3c4.n p3c4.noo p3c4.no_NAs
1 2010-01-04 0 0.1076581 0.006542157 6 2 0
2 2010-01-06 2 0.1393447 0.066758781 7 1 0
3 2010-01-09 5 0.2056846 0.047722862 7 1 0
p3c5.rd p3c5.day p3c5.mm p3c5.sd p3c5.n p3c5.noo p3c5.no_NAs
1 2010-01-04 0 0.07987147 0.006508766 7 1 0
2 2010-01-06 2 0.11496167 0.046478767 8 0 0
3 2010-01-09 5 0.40326471 0.210217097 7 1 0
解決
他の回答に追加するには、私は変数名にエンコードされた有用な情報を持っているのは良いアイデアだとは思いません。すべての有用な情報がいくつかの変数の値になるように、はるかに良いあなたのデータを再配置します。私は適切なフォーマットを示唆するデータセットについて十分に知らないが、それはのようなものかもしれません。
p c rd day date mm sd ...
3 3 2010-10-04 ...
これが完了したら、あなたの質問への答えは簡単df$mm
になります。
、あなたはreshape
パッケージからreshape
機能や関数を使用してR内に上記のような、より有用な形態でそれを並べ替えることができます。
他のヒント
は、あなたが行うことができ、指定された名前を持つすべての列を取得するには
names_with_mm <- grep("mm$", names(series_to_plot.df), value=TRUE)
series_to_plot.df[, names_with_mm]
しかし、あなたのベースdata.frame
のすべてが同じ構造を持っているならば、あなたがそれらをrbind
することができ、何かます:
series_to_plot.df <- rbind(
cbind(name="p3c3", p3c3),
cbind(name="p3c4", p3c4),
cbind(name="p3c5", p3c5)
)
次にmm
値が1列にあり、プロットへの容易
<のhref = "http://docs.google.com/viewer?a=v&q=cache:sNuYdCH4aFwJ:cran.r-project.org/doc/manuals/R-lang.pdf+r+language +定義&HL = EN&GL = US&PID = BL&SRCID = ADGEESimnt1hKjEDxoFSU7XYxXBy8-XHZjM8fxZdo9sgWeQJ_9eHJLbNETr9YFCcUwU2KPKO921c_MX4gbTBlbIaFU4sTmorkTzPe_ymWqnWt1EeQRBry4-XmVQl4m-2sb20N8kKtiBk&SIG = AHIEtbTX7nuWBs1BVGYXVFa_BVAU5VSE2Q」のrel = "nofollowをnoreferrer">かなり便利ですインデックスにいくつかの良い情報(秒3.4.1)を持つのR言語の定義、 。
あなたは、その後のgrep()コマンドを使用してシーケンスに一致する名前を引くことができます。このように、文字列、それはすべて一緒ます:
dataWithMM <- series_to_plot.df[,grep("[P]", names(series_to_plot.df))]
はそれを少し解体し、これは「ミリメートル」のパターンに一致する列数を取得します
namesThatMatch <- grep("[mm]", names(series_to_plot.df)
そして、私たちは私たちが望むの列を呼び出すためにそのリストを使用します:
dataWithMM <- series_to_plot.df[, namesThatMatch ]