我正在编写一个函数 foo(..., lev) 基于包 limma (生物导体)的 makeContrasts 函数:
makeContrasts(..., contrasts=NULL, levels)
我想将 foo 'as-is' 的 ... 参数传递给 makeContrasts。这是我的代码:
foo = function(..., lev) {
e = substitute(list(...))
makeContrasts(e[[2]], levels=lev)
}
foo(a + b, design)
我使用 e[[2]] 的原因是 e 将是list(a+b)而 e[[1]] 是list但 e[[2]] 是我需要的:a + b
但问题是传递给 makeContrast 的实际参数是 e[[2]]而不是a + b。那么该怎么办?
完整的参数分配如下:
ct = factor(c("a","b"))
design = model.matrix(~0+ct)
colnames(design)=levels(ct)
makeContrasts(a+b,levels=design) # It works
foo(a+b, design) # Does not work