lapply
でR
を使用する場合、関数に複数の引数を渡すことに関して質問があります。
lapply(input, myfun);
の構文でlapplyを使用すると、これは簡単に理解でき、myfunを次のように定義できます。
myfun <- function(x) {
# doing something here with x
}
lapply(input, myfun);
input
の要素は、x
引数としてmyfun
に渡されます。
しかし、myfunc
にさらに引数を渡す必要がある場合はどうなりますか?たとえば、次のように定義されます。
myfun <- function(x, arg1) {
# doing something here with x and arg1
}
input
要素(x
引数として)と他の引数の両方を渡すときにこの関数を使用するにはどうすればよいですか?
ヘルプページを検索すると、lapply
の引数の1つは不可解な...
です。ヘルプページの[引数]セクションを見ると、次の行があります。
...: optional arguments to ‘FUN’.
したがって、他の引数をlapply
呼び出しに引数として含めるだけで、次のようになります。
lapply(input, myfun, arg1=6)
およびlapply
は、arg1
が処理方法を知っている引数ではないことを認識して、自動的にmyfun
に渡します。他のすべてのapply
関数は同じことを行うことができます。
補遺:独自の関数を作成するときにも...
を使用できます。たとえば、ある時点でplot
を呼び出す関数を記述し、関数呼び出しからプロットパラメーターを変更できるようにしたいとします。関数に引数として各パラメーターを含めることもできますが、それは面倒です。代わりに...
(関数とその中のplotの呼び出しの両方の引数として)を使用し、関数が認識しない引数をplot
に自動的に渡すことができます。
アランが示唆するように、関数 'mapply'は、複数の複数のリストまたはベクトル引数に関数を適用します。
mapply(myfun, arg1, arg2)
マニュアルページを参照してください: https://stat.ethz.ch/R-manual/R-devel/library/base/html/mapply.html
次の方法で実行できます。
myfxn <- function(var1,var2,var3){
var1*var2*var3
}
lapply(1:3,myfxn,var2=2,var3=100)
そしてあなたは答えを得るでしょう:
[[1]] [1] 200
[[2]] [1] 400
[[3]] [1] 600