2012-02-07 15 views

答えて

10

あなたはこれを行うことができます。

mydf[,"firstcol"] 

は、列が二、ない最初行くことを覚えておいてください。あなたの例では

、のは、それを打破しましょう、mydf[mydf$firstcol,]はあなたを与えるかを確認するには:

> mydf$firstcol 
[1] 1 2 1 

だから本当にmydf[mydf$firstcol,]だから、あなたが行1、2を求めている

> mydf[c(1,2,1),] 
    firstcol secondcol 
1   1   3 
2   2   4 
1.1  1   3 

と同じです、あなたは1がmydfの行1と同じであるためにあなたの行を求めているされて、あなたの行2はmydfの行1と同じになるように3 mydfの行2と同じとあなたの行可能にする、と1。あなたは両方の列を求めています。

もう一つの問題は、次のように動作しない理由です:

あなたはそのようにそれを求めるときには、あなたが mydf$firstcolをしないとき、列名の前後に引用符を入れて持っている理由です
> mydf[,firstcol] 
Error in `[.data.frame`(mydf, , firstcol) : object 'firstcol' not found 

、。答えは、使用している演算子が異なるタイプの引数を必要としていることです。 '$'を見ると、x $ nameという形式を見ることができるので、2番目の引数は引用符で囲まれていない名前にすることができます。その後、?'['を参照すると、実際に同じヘルプページが表示されます。そしてそこにあなたがそれを説明する以下を見つけるでしょう。 「文字」ベクトルが引用されたエントリを持つ必要があります(それはあなたがR(および他の多くの言語)で文字ベクトルを入力する方法です。

i, j, ...: indices specifying elements to extract or replace. Indices 
     are ‘numeric’ or ‘character’ vectors or empty (missing) or 
     ‘NULL’. Numeric values are coerced to integer as by 
     ‘as.integer’ (and hence truncated towards zero). Character 
     vectors will be matched to the ‘names’ of the object (or for 
     matrices/arrays, the ‘dimnames’): see ‘Character indices’ 
     below for further details. 
+0

ありがとうございます! – speendo

2

何が徐王ます。の非常に明確な説明を追加しないようにさらにdata.tableパッケージではmydf[firstcol==1,]またはmydf[,firstcol]などの表記法を使用することができ、多くの方がより自然なものを見つけることができます。

関連する問題