적용의 FUN에 몇 가지 인수 전달(및 기타 *적용)
사용할 때 함수에 여러 인수를 전달하는 것과 관련하여 질문이 있습니다.lapply
에R
.
다음 구문과 함께 lapply를 사용할 때lapply(input, 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(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).
언급URL : https://stackoverflow.com/questions/14427253/passing-several-arguments-to-fun-of-lapply-and-others-apply
'programing' 카테고리의 다른 글
테이블의 모든 행 삭제 (0) | 2023.07.07 |
---|---|
500.21 불량 모듈 목록의 "Managed Pipeline Handler" (0) | 2023.07.07 |
C 조건부 연산자('?')(두 번째 매개 변수가 비어 있음) (0) | 2023.07.07 |
C++ 프로그램 내에 C 헤더 포함 (0) | 2023.07.07 |
SELECT의 의미는 무엇입니까...XML PATH(' ', 1, 1)의 경우? (0) | 2023.07.07 |