127

lapplyで使用する場合、関数に複数の引数を渡すことに関して質問がありますR

-の構文でlapplyを使用すると、lapply(input, myfun);これは簡単に理解でき、myfunを次のように定義できます。

myfun <- function(x) {
 # doing something here with x
}

lapply(input, myfun);

の要素は引数として。inputに渡されます。xmyfun

しかし、さらにいくつかの引数をに渡す必要がある場合はどうなりmyfuncますか?たとえば、次のように定義されます。

myfun <- function(x, arg1) {
 # doing something here with x and arg1
}

input両方の要素(x引数として)と他の引数を渡す場合、この関数をどのように使用できますか?

4

4 に答える 4

148

ヘルプページを調べると、への議論の1つはlapply神秘的...です。ヘルプページの「引数」セクションを見ると、次の行が見つかります。

...: optional arguments to ‘FUN’.

したがって、あなたがしなければならないのは、次のように、他の引数を引数lapplyとして呼び出しに含めることだけです。

lapply(input, myfun, arg1=6)

そして、それが何をすべきかを知っている議論ではないことをlapply認識して、それを自動的にに渡します。他のすべての関数は同じことを行うことができます。arg1myfunapply

補遺:...独自の関数を作成するときにも使用できます。たとえば、plotある時点で呼び出す関数を作成し、関数呼び出しからプロットパラメータを変更できるようにしたいとします。関数の引数として各パラメーターを含めることができますが、それは面倒です。代わりに...、(関数とその中のプロットの呼び出しの両方に対する引数として)を使用して、関数が認識しない引数を自動的にに渡すことができますplot

于 2013-01-20T17:41:29.617 に答える
23

Alanが提案したように、関数'mapply'は、複数の複数のリストまたはベクトル引数に関数を適用します。

mapply(myfun, arg1, arg2)

マニュアルページを参照してください: https ://stat.ethz.ch/R-manual/R-devel/library/base/html/mapply.html

于 2016-09-30T15:59:14.307 に答える
14

次の方法でそれを行うことができます:

 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

于 2017-04-17T01:32:30.843 に答える
7
myfun <- function(x, arg1) {
 # doing something here with x and arg1
}

xはベクトルまたはリストであり、myfuninlapply(x, myfun)はの要素ごとにx個別に呼び出されます。

オプション1

arg1myfun呼び出し(など)で全体を使用する場合はmyfun(x[1], arg1)、(上記のように)を使用します。myfun(x[2], arg1)lapply(x, myfun, arg1)

オプション2

ただし、(など)の要素と一緒myfunにの各要素を個別に呼び出したい場合は、を使用することはできません。代わりに、(上記のように)または:を使用してくださいarg1xmyfun(x[1], arg1[1])myfun(x[2], arg1[2])lapplymapply(myfun, x, arg1)apply

 apply(cbind(x,arg1), 1, myfun)

また

 apply(rbind(x,arg1), 2, myfun).
于 2019-11-03T12:23:47.473 に答える