将基于模式匹配的参数传递给R中的函数

时间:2017-09-15 13:56:32

标签: r regex functional-programming

我有一个任意数量的R对象,我想作为参数传递给函数。对象的命名约定是“input_ \ d +”,即字符串“input_”后跟一个或多个数字。仅有三个参数的静态示例如下所示:

my_function <- function(input_1, input_2, input_3)

我需要做什么才能使R“看起来”满足模式“input_ \ d +”的所有对象并将其传递给函数(函数的代码当然可以处理传递的任意数量的参数)。

任何建议都将受到高度赞赏,

奥利

2 个答案:

答案 0 :(得分:5)

您可以使用mgetls创建所有输入的命名列表,并将该列表传递给您的函数,您可能需要修改该输入的位:

my_function(mget(ls(pattern = "^input_\\d+$")))

答案 1 :(得分:1)

您可以使用get按名称搜索对象。

input_1 <- 1
input_2 <- 2
input_3 <- 3

my_function <- function(input_1) {
    print(input_1^input_1)
}

for(i in 1:3) {
    foo_1 <- get(paste0("input_", i))
    my_function(foo_1)
}

1
4
27