我有一个确实使我困惑的问题,但是我很难复制。
我使用一个自制函数,将数据集和一系列条件作为输入。它与subset()
非常相似,但有所修改。我在下面打印功能。在我的机器上(Mac OS 10.14.6,R 3.6.0 GUI 1.70)它可以工作。在我需要使用的计算机网格(也为R 3.6)上,存在以下问题:
subs(dat, a==1)
工作正常。但是,
ca <- 1
subs(dat, a==ca)
不起作用,并且不断抛出错误,找不到ca
。我已经确保ca
确实存在,但是以某种方式它不允许将vector或data.tables传递给该函数。正如我所说,在我自己的计算机上不存在此问题,这就是为什么我不能提供MWE的原因。
有人遇到过类似的问题吗?我迷失了方向,甚至不知道问题出在机器还是代码上。因此,任何关于从哪里开始寻找的提示都将受到欢迎。
功能和数据:
subs = function(x, ..., verbose=FALSE){
L = substitute(list(...))[-1]
mon = data.table(cond = as.character(L))[, skip := FALSE]
for (i in seq_along(L)){
d = eval( substitute(x[cond, verbose=v], list(cond = L[[i]], v = verbose)) )
if (nrow(d)){
x = d
} else {
mon[i, skip := TRUE]
}
}
#print(mon)
return(x)
}
dat <- data.table(id=1:5, a=c(3,1,3,1,3))