web-dev-qa-db-ja.com

変数の名前が文字列に格納されているアクセス変数値

他の言語でも同様の質問が提起されています: [〜#〜] c [〜#〜]sqlJava など.

しかし、私はこれをRで実行しようとしています。

私が持っています:

ret_series <- c(1, 2, 3)
x <- "ret_series"

(1, 2, 3)に直接言及せずに、xで何らかの関数/操作を呼び出すことでret_seriesを取得するにはどうすればよいですか?

51
Zhang18

質問に答えを提供しました。 getを試してください。

> get(x)
[1] 1 2 3
70
Joshua Ulrich

1回限りの使用の場合、get関数は(前述したように)機能しますが、大規模なプロジェクトにはうまく対応できません。リストまたは環境にデータを保存してから、[[を使用して個々の要素にアクセスすることをお勧めします。

mydata <- list( ret_series=c(1,2,3) )
x <- 'ret_series'

mydata[[x]]
18
Greg Snow

次のいずれかに問題がありますか?

eval(as.name(x))

eval(as.symbol(x))
5
RomanM

上記の例の一部は、_data.frame_では機能しないことに注意してください。

たとえば、与えられた

x <- data.frame(a=seq(1,5))

get("x$a")は_x$a_を提供しません。

1
mm441