许多 R 函数采用可变数量的参数。 sum()
是一个例子:sum(1, 2)
、sum(1, 2, 3)
和sum(1, 2, 3, 4)
都是有效的命令。
我需要编写以批处理模式运行的脚本。在这些脚本中,我需要将多个参数传递给一个函数。参数不会从命令行传入。它们必须是变量(不是对应于变量名的字符串)。它们都属于同一类,它们的名称将以相同的字符开头,但我不知道名称或参数的数量。有没有一种简洁的方法将变量传递给函数?
这是一个示例:我希望代码生成名称具有 pattern 的所有变量的总和^int\\d$
。我知道至少有一个这样的变量,但我不知道有多少。此代码有效:
# Set up toy data
int1 <- 3
int2 <- 5
# Get the sum
argNames <- ls(pat='^int\\d$')
argNames.list <- as.list(argNames)
argNames.list <- lapply(argNames.list, function (x) get(x))
do.call(sum, argNames.list)
我的反对意见是这段代码有点麻烦。将操作分散到四行会降低清晰度。有没有一种 R 惯用的方法可以用更少的代码行获得相同的结果?