답변:
적용 함수 중 하나에 추가 인수로 var2를 전달하면됩니다.
mylist <- list(a=1,b=2,c=3)
myfxn <- function(var1,var2){
var1*var2
}
var2 <- 2
sapply(mylist,myfxn,var2=var2)
이것은 var2
모든 호출에 동일 하게 전달 myfxn
됩니다. 대신 각 호출이 myfxn
1st / 2nd / 3rd / etc를 얻으려면. mylist
및의 요소 var2
이면 mapply
의 도메인에 있습니다.
myfxn
벡터화 될 수 있습니다.이 경우 사용해야합니다myfxn(unlist(mylist), var2=var2)
sapply(mylist, function(var1, var2) { var1*var2 }, var=thisvar2)
하지만 오류가 발생하는 주장이 일치 여러 형식 인수
var
대신 전달하는 인수의 이름을 지정하고 있다는 문제가 있다고 생각합니다 var2
. R은 당신이 의미하는 바를 신성하게 만들 수 없습니다.
함수에 두 개의 벡터 변수가 있고 각각의 값에 대해 자체 계산해야하는 경우 (@Ari B. Friedman에서 언급했듯이) mapply
다음과 같이 사용할 수 있습니다 .
vars1<-c(1,2,3)
vars2<-c(10,20,30)
mult_one<-function(var1,var2)
{
var1*var2
}
mapply(mult_one,vars1,vars2)
다음을 제공합니다.
> mapply(mult_one,vars1,vars2)
[1] 10 40 90
mapply
vars1
단일 요소가있는 경우에도 재활용됩니다 . 예를 들어 vars1 <- 3
, mapply(mult_one, vars1, vars2)
는를 반환합니다 30 60 90
. 이것은 lapply
함수의 두 번째 인수에 대해 사용하려는 경우 유용 합니다.