태그 보관물: lapply

lapply

lapply의 FUN에 여러 인수 전달 (및 기타 * apply) myfun을 다음과 같이 정의 할 수 있습니다. myfun

lapplyin을 사용할 때 여러 인수를 함수에 전달하는 것과 관련된 질문 이 R있습니다.

lapply를 구문과 함께 사용하면 lapply(input, myfun);쉽게 이해할 수 있으며 myfun을 다음과 같이 정의 할 수 있습니다.

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

lapply(input, myfun);

및의 요소는 inputx인수로 전달됩니다 myfun.

하지만 더 많은 인수를 전달해야하는 경우 어떻게해야 myfunc합니까? 예를 들어 다음과 같이 정의됩니다.

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

이 함수를 두 input요소 ( x인수로)와 다른 인수 를 전달하는 데 어떻게 사용할 수 있습니까?



답변

도움말 페이지를 보면 lapply의문 의 여지 가있는 .... 도움말 페이지의 인수 섹션을 보면 다음 행을 찾을 수 있습니다.

...: optional arguments to ‘FUN’.

따라서 다음과 같이 lapply호출에 다른 인수를 인수로 포함하기 만하면됩니다 .

lapply(input, myfun, arg1=6)

그리고 lapply, arg1그것이 무엇을해야할지 알고있는 논쟁이 아니라는 것을 인식 하면 자동으로 myfun. 다른 모든 apply기능은 동일한 작업을 수행 할 수 있습니다.

부록 :... 자신 만의 함수를 작성할 때도 사용할 수 있습니다 . 예를 들어, plot어떤 지점에서 호출하는 함수를 작성하고 함수 호출 에서 플롯 매개 변수를 변경할 수 있기를 원한다고 가정합니다. 각 매개 변수를 함수의 인수로 포함 할 수 있지만 이는 성가신 일입니다. 대신 ...(함수에 대한 인수와 그 안에 플롯하는 호출 모두에 대한 인수로) 사용할 수 있으며 함수가 인식하지 못하는 인수가 자동으로에 전달되도록 할 수 plot있습니다.


답변

Alan이 제안한대로 ‘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


답변

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

x벡터 또는 목록과 myfun에서 lapply(x, myfun)의 각 요소에 대해 호출됩니다 x별도.

옵션 1

arg1myfun호출 ( myfun(x[1], arg1), myfun(x[2], arg1)등) 에서 전체를 사용 하려면 lapply(x, myfun, arg1)(위에 언급 된대로) 사용하십시오.

옵션 2

당신은 그러나 전화를하고 싶습니다 myfun의 각 요소 arg1의 요소와 함께 별도로 x( myfun(x[1], arg1[1]), myfun(x[2], arg1[2])등)은 사용할 수 없습니다 lapply. 대신 mapply(myfun, x, arg1)(위에 언급 된대로) 또는 apply다음을 사용하십시오.

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

또는

 apply(rbind(x,arg1), 2, myfun).


답변