2

subset() の便利な関数を書いているときに、同等の論理ステートメントを使用すると異なるサブセットが返されるという奇妙な状況に遭遇しました。たとえば、次のようになります。

dat = data.frame(ttl.stims = c(4,4,8,8), change = c('big', 'small'))
dat
ttl.stims = 4

#logical statements are equivalent
dat$ttl.stims == 4
dat$ttl.stims == ttl.stims

#subset evaluates differently
subset(dat, dat$ttl.stims == 4)
subset(dat, dat$ttl.stims == ttl.stims)

私はこれを回避するために次のことを行ってきました:

index = dat$ttl.stims == ttl.stims
subset(dat, index)

しかし、なぜ最初の 2 つのサブセットが同じ結果を生成しないのか、とても興味があります! アイデア?考え?ポンティフィケーション?

4

1 に答える 1

4

subsetシンボルの呼び出し内はttl.stimsの環境で解釈されるdatため、 (解釈後) となり dat$ttl.stimsます。サブセットへの 2 番目の呼び出しは、データフレーム全体を返すと予測します。

于 2012-06-05T02:18:03.747 に答える