2011-11-02 17 views
8

私はdata.dfと呼ばれるデータフレームをcol1、col2、col3 .... col15というさまざまな列に持っています。データフレームには特定のクラス属性はありませんが、任意の属性をクラス変数として使用できます。データフレームの列名として文字列を渡す

target<-data.df$col3 

、次いでそのような部分とJ48(のようないくつかの学習者への入力として、そのフィールド(ターゲット)を使用する:私は次のようにクラスとして扱われるべき列番号を指すターゲットと呼ばれるR変数を使用したいですパッケージRWeka)から:

part<-PART(target~.,data=data.df,control=Weka_control(M=200,R=FALSE)) 
j48<-J48(target~.,data=data.df,control=Weka_control(M=200,R=FALSE)) 

アイデアは私のRコードの先頭で一度だけ「ターゲット」を変更することができることです。これはどうすればできますか?

+0

あなたがしたいことが 'data.df $ col3'の代わりに' col3'を呼び出すことができれば 'attach(data.df)'をすることができます。しかし、データの処理が完了したら、detach()を使用するよう注意してください。一度に複数のデータフレームを使用すると、変数名が重複していると混乱し、エラーが発生しやすくなります。 –

+0

アントワーヌ、私はattach()を使うのは良い習慣ではないと読んでいます。 'within'の例を提供できますか?私はそれについて読んだことがありますが、私の現在の知識ではあまり意味がありませんR –

+0

ありがとう、ここに私がしたものです。 –

答えて

6

Rでreferencesを使用することを尋ねると不可能です。しかし

、あなたはこのように、これは[演算子を持つことが可能であり、明示的に与えられていない名前で列を得ることについて尋ねる場合:

theNameOfColumnIwantToGetSummaryOf<-"col3" 
summary(data.df[,theNameOfColumnIwantToGetSummaryOf]) 

...またはそのような:

myIndexOfTheColumnIwantToGetSummaryOf<-3 
summary(data.df[,sprintf("col%d",myIndexOfTheColumnIwantToGetSummaryOf)]) 
+0

複数の列はどうですか?私は 'df [、colName]'で何をやったことができるのか分かっていますが、numと名前をどのように混ぜ合わせることができますか?例: 'df [、c(1,2,4)]'ここでcol 4の名前は "colName"です。どのようにして 'df [、c(1,2、" colName ")]'を実行できますか?これは私が書くことを試みているループの中で役に立ちます。 – Hendy

+0

@Hendy名前と番号を混在させることはできません。 (cbind(df [、c(1,2)]、df [、c( "colName")]) ')の結果をバインドするか、名前を' match' – mbq

+0

@Hendyとにかく、あなたがこのようにしたいと思っていることをあなたがあまりにも難しくしているという奇妙な気持ちがある、なぜループ全体について質問しませんか? – mbq

9

列を参照するために文字列を使用することで、多くのことが成し遂げられることがあります。それは次のように機能します。

> df <- data.frame(numbers=seq(5)) 
> df 
    numbers 
1  1 
2  2 
3  3 
4  4 
5  5 
> df$numbers 
[1] 1 2 3 4 5 
> df[['numbers']] 
[1] 1 2 3 4 5 

あなたは、変数targetを文字列としてご希望の列の名前ことができます。 RWekaについてはわかりませんが、ggplotなどの多くのライブラリでは、列の文字列参照を使用できます(aesではなくaes_stringパラメータ)。

関連する問題