xlab - plot title in r




R의 정적 변수 (2)

R에 여러 번 호출하는 함수가 있습니다. 나는 그것을 호출 한 횟수를 추적하여 함수의 내부에서 무엇을 할 것인지에 대한 결정을 내리고 싶다. 여기 제가 지금 가지고있는 것이 있습니다 :

f = function( x ) {
   count <<- count + 1
   return( mean(x) )
}

count = 1
numbers = rnorm( n = 100, mean = 0, sd = 1 )
for ( x in seq(1,100) ) {
   mean = f( numbers )
   print( count )
}

함수의 범위 밖에서 변수 개수를 선언해야한다는 점이 마음에 들지 않습니다. C 또는 C ++에서는 정적 변수 만 만들 수 있습니다. R 프로그래밍 언어에서 비슷한 일을 할 수 있습니까?


여기에 또 다른 접근 방법이 있습니다. 이것은 적은 타이핑과 (내 의견으로는) 더 읽기 쉽도록 요구한다 :

f <- function(x) {
    y <- attr(f, "sum")
    if (is.null(y)) {
        y <- 0
    }
    y <- x + y
    attr(f, "sum") <<- y
    return(y)
}

이 스 니펫 은이 R-Bloggers 기사에서 볼 수있는 개념의 더 복잡한 예입니다.


클로저 (프로그래밍 언어의 의미에서)를 사용하는 한 가지 방법이 있습니다. 즉, 함수에 의해서만 액세스 할 수있는 둘러싸인 환경에 카운트 변수를 저장하십시오.

make.f <- function() {
    count <- 0
    f <- function(x) {
        count <<- count + 1
        return( list(mean=mean(x), count=count) )
    }
    return( f )
}

f1 <- make.f()
result <- f1(1:10)
print(result$count, result$mean)
result <- f1(1:10)
print(result$count, result$mean)

f2 <- make.f()
result <- f2(1:10)
print(result$count, result$mean)
result <- f2(1:10)
print(result$count, result$mean)




static-variables