program tip

R은 여러 매개 변수를 가진 기능을 적용

radiobox 2020. 7. 27. 07:48
반응형

R은 여러 매개 변수를 가진 기능을 적용


f(var1, var2)R에 함수 가 있습니다. 설정 한 var2 = 1다음 함수 f()를 목록 에 적용하려고 한다고 가정 합니다 L. 기본적으로 출력이있는 새로운 목록 L *을 얻고 싶습니다.

[f(L[1],1),f(L[2],1),...,f(L[n],1)]

어떻게하면이 중 하나와 함께해야합니까 apply, mapply또는 lapply?


적용 함수 중 하나에 추가 인수로 var2를 전달하십시오.

mylist <- list(a=1,b=2,c=3)
myfxn <- function(var1,var2){
  var1*var2
}
var2 <- 2

sapply(mylist,myfxn,var2=var2)

이것은의 var2모든 호출에 동일 하게 전달 myfxn됩니다. 대신에 당신은 각각의 호출이 myfxn1 / 2 / 2 / 3 / etc를 얻길 원합니다 . 모두의 요소 mylistvar2, 당신은에있어 mapply의 도메인.


함수에 두 개의 벡터 변수가 있고 각 변수 값에서 자체 계산해야하는 경우 (@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

@Alexander의 예를 더 일반화하려면 outer함수가 각 벡터 값 에서 자체적으로 계산해야하는 경우와 관련이 있습니다.

vars1<-c(1,2,3)
vars2<-c(10,20,30)
mult_one<-function(var1,var2)
{
   var1*var2
}
outer(vars1,vars2,mult_one)

제공합니다 :

> outer(vars1, vars2, mult_one)
     [,1] [,2] [,3]
[1,]   10   20   30
[2,]   20   40   60
[3,]   30   60   90

참고 URL : https://stackoverflow.com/questions/6827299/r-apply-function-with-multiple-parameters

반응형