多くのR関数は、可変数の引数を取ります。 sum()
例:sum(1, 2)
、、、sum(1, 2, 3)
およびsum(1, 2, 3, 4)
はすべて有効なコマンドです。
バッチモードで実行するスクリプトを作成する必要があります。これらのスクリプトでは、関数に複数の引数を渡す必要があります。引数はコマンドラインから渡されません。それらは変数でなければなりません(変数名に対応する文字列ではありません)。それらはすべて同じクラスになり、名前は同じ文字で始まりますが、名前や引数の数はわかりません。変数を関数に渡す簡潔な方法はありますか?
次に例を示します。名前がパターンを持つすべての変数の合計を生成するコードが必要です^int\\d$
。そのような変数が少なくとも1つあることは知っていますが、いくつあるかはわかりません。このコードは機能します:
# 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)
私の異議は、このコードが少し面倒だということです。操作を4行に分散すると、明確さが低下します。より少ないコード行で同じ結果を得るR-イディオム的な方法はありますか?