Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-获取与用户函数中的正则表达式模式匹配的表列表_R_Regex_Function - Fatal编程技术网

R-获取与用户函数中的正则表达式模式匹配的表列表

R-获取与用户函数中的正则表达式模式匹配的表列表,r,regex,function,R,Regex,Function,我希望在R中创建一个用户函数,它合并使用正则表达式查找这些表的多个表。在我的情况下,我希望合并我环境中以“m_”开头的所有表 这正是我想要的: Reduce(function(...) merge(..., all = TRUE), mget(apropos("^m_"))) 但当我尝试将此代码转换为用户函数时,它不起作用: multi.merge <- function(...){ x <- Reduce(function(...) merge(...,

我希望在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_")

multi.merge尝试在函数中发送固定参数

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_")

multi.merge我们可以使用
reduce
will
full\u-join

library(dplyr)
library(purrr)
multi.merge <- function(pattern) {
        mget(ls(pattern = pattern, envir = .GlobalEnv), envir = .GlobalEnv)  %>%
              reduce(full_join)
  }

dt <- multi.merge("^m_")
库(dplyr)
图书馆(purrr)
多重合并%
减少(完全联接)
}
dt返回:错误:
.x
为空,并且没有提供
.init
正则表达式模式可能有问题吗?我有一些表,比如“m_table1”、“m_table2”,我正在尝试匹配这些表。这应该是正确的吗@akrun您可以尝试
multi.merge(“^m\u table\\d+$”)
m_table1 <- structure(list(col1 = 1:5), class = "data.frame", row.names = c(NA, 
-5L))

m_table2 <- structure(list(col1 = 2:7, value = c(0.620061606036922, -0.833792752750578, 
-0.939990781455841, 0.00275725433910228, 1.40140753383493, 0.708695548097395
)), class = "data.frame", row.names = c(NA, -6L))