9

名前が変数に格納されている列を持つデータ フレームがあるとします。ブラケット表記を使用すると、変数を使用してこの列に簡単にアクセスできます。

df <- data.frame(A = rep(1, 10), B = rep(2, 10))
column.name <- 'B'

df[,column.name]

しかし、 への呼び出しを使用して任意の列にアクセスする方法は明らかではありませんwith()。素朴なアプローチ

with(df, column.name)

column.name呼び出し元の環境で効果的に評価します。with()ブラケットと同じ結果が得られるように、評価を十分に遅らせるにはどうすればよいですか?

4

2 に答える 2

17

あなたが使用することができますget

with(df, get(column.name))
于 2010-04-10T19:48:51.583 に答える
1

「with」を使用して、ローカライズされた一時的な名前空間を作成し、その中で式を評価します。上記のコードでは、式を渡していません。

例えば:

data(iris)   # this data is in your R installation, just call 'data' and pass it in

通常、次のようにデータ フレーム内の変数名を参照する必要があります。

tx = tapply(iris$sepal.len, list(iris$species), mean)

これを行わない限り:

attach(iris)

「attach」を使用する際の問題は、名前空間が衝突する可能性があるため、「detach」を呼び出すことを忘れないでください。

「with」を使用する方がはるかにクリーンです。

tx = with( iris, tapply(sepal.len, list(species), mean) )

したがって、呼び出しシグネチャは (非公式に) 次のとおりです。 with( data, function() )

于 2010-04-10T19:12:02.400 に答える