首页 > 解决方案 > R - 在用户函数中获取与正则表达式模式匹配的表列表

问题描述

我希望在 R 中创建一个用户函数,它合并多个使用正则表达式查找这些表的表。在我的情况下,我想合并环境中以“m_”开头的所有表。

这正是我想要的:

Reduce(function(...) merge(..., all = TRUE), mget(apropos("^m_")))

但是当我尝试将此代码转换为用户函数时它不起作用:

    multi.merge <- function(...){
        x <- Reduce(function(...) merge(..., all = TRUE), mget(apropos(...))
        return(x)
}

dt <- multi.merge("^m_")

错误:未找到“m_table1”的值

我尝试过使用不同的函数,例如get0or syms,而不同的语法最终会导致相同的错误。我怀疑这只是与我不理解的函数结构中的问题有关。

有什么办法可以使这项工作?

标签: rregexfunction

解决方案


尝试在函数中发送一个固定参数。

multi.merge <- function(pattern){
   Reduce(function(...) merge(..., all = TRUE), mget(ls(pattern = pattern))
   #Or
   #Reduce(function(...) merge(..., all = TRUE), mget(apropos(pattern))
}


dt <- multi.merge("^m_")

推荐阅读