R中的S4方法元编程

时间:2015-05-28 17:43:55

标签: r metaprogramming s4

以下是一个例子:

^[a-zA-Z0-9=_\/+-]+$

所有这些S4方法都很相似,它们的区别仅在于某些文件扩展名:bim,fam和frq。我想知道是否有一些元拓扑技术可用于简化它们(以编程方式生成它们)?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:

loadPlinkMeta = gtools::defmacro(ext, method_name, expr = {
    setGeneric(method_name, 
            function(pl_info, ...) {
                standardGeneric(method_name)
            })
    setMethod(method_name, 
            signature(pl_info = "PlInfo"), 
            function(pl_info) {
                loadFFDF(pl_info@ff_dir_trio[ext])
            })
})

loadPlinkMeta("bim", "loadBim")
loadPlinkMeta("fam", "loadFam")
loadPlinkMeta("frq", "loadFrq")