2011-01-24 11 views
0

私はこれがスーパー速いものだと思いますが、私は、私は私の人生のためにそれを行う方法を覚えることができないので、私がお願いしたい考え出し...クイック質問

と仮定私は、"Blah","Bleh"、および"Meh"のヘッダを持つdata.frame(電話番号DF)を持っています。
また、文字クラスベクトルfooがあり、要素はDFというヘッダーと同じです。

Blah <- rnorm(10)
Bleh <- runif(10)
Meh <- rnorm(10)
DF <- data.frame(Blah,Bleh,Meh)
foo <- c(rep("Blah",3),rep("Bleh",3),rep("Meh",3))

私は、次の操作を実行したいと思います:サブセットDFfoo内のi番目の要素に応じました。私はこれが - DF$foo[1] - うまくいくと思ったが、そうではない。

names==を使用してサブセットすることができますが、はるかに短い(1行)方法があると思いますか?

答えて

3

DF$foo[1]は、foo(存在しない)という列の最初の要素を返そうとします。あなたはDF[foo[1]]が必要です。

+0

オイ!私はそれを覚えていないと信じられない!ありがとうジョシュア!! – Ray

1

これは必要なものですか?

DF[ ,foo][1]

ああ、ヨシュアが投稿私は例えば、...あなたは、列の選択領域をasloすることができます入力している間:

DF[1:3,foo][1] 
2
subset(DF, select=foo[3]) 
       Blah 
1 0.814939149951 
2 -0.800644571486 
3 -0.424080059851 
4 1.012792429940 
5 1.291888735720 
6 0.642523425131 
7 0.537486547429 
8 0.315031122082 
9 -0.296439716108 
10 0.372453578695 
+0

これは、select引数が動作する方法のために少し混乱します。通常はquotednamesを含む変数ではなく、問い合わせのある変数名を与えます。 – hadley

+0

引用符付き引数と引用符なし引数の両方がサブセットで成功します。それは "["と同様に提供されるものを評価します。 –