21 個のグローバル環境変数があり、それぞれに大量のデータが含まれています。関数内で参照によってこれらの変数にアクセスしたいのですが、それらの名前をパラメーター化したいので、たとえば、SPdata、NEdata、FRdata などがある場合...コピーを作成せずに「国名」(つまり、「SP、NE」、「FR」など)のみ(サイズがそれぞれ300メガを超えるため)Getはコピーを作成するようです(私のサイズでは非効率的です)これを行うことはできますか? 私は現在どこでも取得を使用しているので、
cData <- get(paste(cCode, "data", sep = ""))
はい、それらすべてをグローバル環境のリストに入れる必要があることはわかっていますが、今では遅すぎて、すべてのコードをリファクタリングしたくありません。私の「取得」がメモリ効率が低下し、ループ内の複数のアクセスが遅くなる可能性があるだけです。たとえば、リスト内にあるかのように各変数にアクセスできますか?
countryData = list(SPdata, NEdata, FRdata..etc) を使用して、countryData[[paste(cCode, "data", sep = "")]] でアクセスする必要がありましたが、今では遅すぎます。
以下のさまざまなアドレスからわかるように、関数内のいくつかの値を変更するつもりであり、get() は変更時にコピーすることを追加する必要がありました。
> .Internal(inspect(a))
@101b7bcf8 14 REALSXP g0c1 [NAM(2)] (len=1, tl=0) 1
> g <- function() {x <- get("a"); x; x <- 2; .Internal(inspect(x))}
> g()
@101cea648 14 REALSXP g0c1 [NAM(2)] (len=1, tl=0) 2
>