내 글로벌 환경 변수가 myList
입니다. myList
을 수정하고이를 myFunction
이라는 글로벌 환경에 다시 할당하는 기능이 있습니다. myList
을 myFunction
으로 수정하면됩니다. 다른 기능이 수정되지 않도록 할 방법이 있습니까 myList
?개체를 수정할 수있는 기능 제한
배경으로 R 사용자를위한 일반적인 도구를 작성합니다. 나는 도구의 사용자가 myList
을 수정할 자신의 기능을 정의 할 수 없도록하고 싶다. 나는 또한 앞으로 쓸 수있는 기능으로 myList
을 수정할 수 있기를 바라지 않습니다.
나는 잠재적 인 해결책이 있지만 나는 그것을 좋아하지 않는다. 도구가 실행되면 사용자가 정의한 모든 함수의 텍스트를 검토하고 myList
을 글로벌 환경에 할당 할 텍스트를 검색 할 수 있습니다. 나는 모든 기능을 검색해야한다는 사실을 싫어한다.
내가 찾고있는 것이 R에서 구현 가능한지 아는 사람이 있습니까? 제공 할 수있는 모든 도움에 감사드립니다.
재현 가능한 예입니다.
assign('myList', list(), envir = globalenv())
myFunction <- function() {
myList <- c(myList, 'test')
assign('myList', myList, envir = globalenv())
}
userFunction <- function() {
myList <- c(myList, 'test')
assign('myList', myList, envir = globalenv())
}
myFunction() # I need some code that will allow this function to run successfully
userFunction() # and cause an error when this function runs
나는 그렇게 제한적이어서는 안된다고 생각합니다. S3 클래스를 살펴 봐야하며 아마도 가장 좋은 솔루션은 그 클래스에 고유 한 데이터 구조와 메소드를 거의 가지고있을 것입니다. 데이터가 함수에 의해 생성되지는 않고 수정 되었기 때문에 초기 입력은 항상 자유롭게 수행됩니다. – zacdav