programing

여러 모수를 사용하는 R 적용 함수

megabox 2023. 6. 18. 12:28
반응형

여러 모수를 사용하는 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만약 당신이 각각의 전화를 원한다면,myfxn두 가지 요소 중 첫 번째/2번째/3번째/등을 모두 얻다mylist그리고.var2그럼 당신은.mapply의 영역.

함수에 두 개의 벡터 변수가 있고 각 벡터 변수 값에 대해 자체 계산을 수행해야 하는 경우(@Ari B 참조).프리드먼) 사용할 수 있습니다.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

반응형