パッケージ limma (生体伝導体) の makeContrasts 関数に基づいて、関数 foo(..., lev) を作成しています。
makeContrasts(..., contrasts=NULL, levels)
foo の ... 引数を「そのまま」makeContrasts に渡したい。これが私のコードです:
foo = function(..., lev) {
e = substitute(list(...))
makeContrasts(e[[2]], levels=lev)
}
foo(a + b, design)
私が e[[2]] を使用した理由は、e がlist(a+b)になり、e[[1]] がリストになり、e[[2]] が必要になるからです: a + b
しかし問題は、makeContrast に渡される実際の引数が a + bではなくe[[2]]であることです。じゃあ何をすればいいの?
完全なパラメータ割り当ては次のとおりです。
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