函数不接受向量作为输入

时间:2019-08-20 16:16:41

标签: r function

我有一个确实使我困惑的问题,但是我很难复制。

我使用一个自制函数,将数据集和一系列条件作为输入。它与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))

0 个答案:

没有答案