在为子集()编写便利函数时,我遇到了一种奇怪的情况,即使用等效的逻辑语句会返回不同的子集。因此,例如:
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)
但我很好奇为什么前两个子集不会产生相同的结果!想法?想法?冠冕堂皇?