2011-10-21 9 views
0

私は文字列( "b")を含む変数(x)を持っています。この文字列は、データフレーム(ABC)に含まれる変数の名前を示します。関数get()を使用してデータフレーム内の変数の値を取得しようとすると、「オブジェクトが見つかりません」というエラーが発生します。データフレームでのget()の使用

a <- 1 
b <- 2 
c <- 3 
ABC <- data.frame(a,b,c) 
x <- "b" 

これは動作します:

get(x) 
    [1] 2 

を、これはエラーを与える一方で:

get(paste("ABC$",x,sep="")) 
    Error in get(paste("ABC$", x, sep = "")) : object 'ABC$b' not foundhere 

これは動作しますが:

ABC$b 
    [1] 2 

どのように私が見て変数xを使用することができます変数bの値は?

ありがとうございます!あなたは物事があまりにも複雑になっている

> get(x, ABC) 
[1] 2 

または

> ABC[[x]] 
[1] 2 

答えて

5

+0

うわー、私はとても馬鹿だった...ありがとう!しかし、少なくとも私は言い訳をしています:何らかの理由で、私の変数x(read.tableを使用している外部ソースから来た)はモード数値を持っていました。もちろん、これにより "オブジェクトが見つかりませんでした"というエラーが発生します。 ABC [[as.character(x)]]を使用すると、すべてが問題ありません。再度、感謝します! – Kilian

+0

さらに、xがデータフレームの有効な名前を格納しているかどうかを確認したい場合、テストは "x%in%names(ABC)"です – Spacedman

2

はこれを試してみてください。

ABC[,x] 

または

ABC[[x]] 

正常に動作する必要があります。

関連する問題