lapply
in을 사용할 때 여러 인수를 함수에 전달하는 것과 관련된 질문 이 R
있습니다.
lapply를 구문과 함께 사용하면 lapply(input, myfun);
쉽게 이해할 수 있으며 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
의문 의 여지 가있는 ...
. 도움말 페이지의 인수 섹션을 보면 다음 행을 찾을 수 있습니다.
...: 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
arg1
각 myfun
호출 ( 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).