반응형
이미 평가중인 약속 : 재귀적인 기본 인수 참조 또는 이전 문제?
여기 내 R 코드가 있습니다. 기능은 다음과 같이 정의됩니다.
f <- function(x, T) {
10 * sin(0.3 * x) * sin(1.3 * x ^ 2) + 0.001 * x ^ 3 + 0.2 * x + 80
}
g <- function(x, T, f=f) {
exp(-f(x) / T)
}
test <- function(g=g, T=1) {
g(1, T)
}
실행중인 오류는 다음과 같습니다
> test ()
error of test () :
이미 평가중인 약속 : 재귀적인 기본 인수 참조 또는 이전 문제?
f
에서 의 정의를 대체하면 g
오류가 사라집니다.
오류가 무엇인지 궁금했습니다. 정의의 대체하지 않을 경우 어떻게를 해결하기 위해 f
의에 g
? 감사!
최신 정보:
감사! 두 가지 질문 :
(1) 함수 test
가에 대해 더 인수를 취하면 f
다음과 같은 것을 추가 할 것 test <- function(g.=g, T=1, f..=f){ g.(1,T, f.=f..) }
입니까? 더 많은 재귀가있는 경우 더 추가하는 것이 안전하고 좋은 습관 입니다. ?
(2) f
예를 들어 g <- function(x, T, f=f){ exp(-f*x/T) }
, 및 비 기능적 논거 인 경우 test <- function(g.=g, T=1, f=f){ g.(1,T, f=f.) }
공식 및 실제 비 기능적 논거 모두에 동일한 이름을 사용하는 것이 좋고 안전한 관행입니까 아니면 잠재적 인 문제를 일으킬 수 있습니까?
형식의 형식적인 주장 x=x
이 이것을 유발합니다. 발생하는 두 인스턴스를 제거하면 다음과 같은 이점이 있습니다.
f <- function(x, T) {
10 * sin(0.3 * x) * sin(1.3 * x^2) + 0.001 * x^3 + 0.2 * x + 80
}
g <- function(x, T, f. = f) { ## 1. note f.
exp(-f.(x)/T)
}
test<- function(g. = g, T = 1) { ## 2. note g.
g.(1,T)
}
test()
## [1] 8.560335e-37
인수 평가 컨텍스트를 지정하면 동일한 이름의 문제점을 피할 수 있습니다.
f <- function(x) {
10 * sin(0.3 * x) * sin(1.3 * x ^ 2) + 0.001 * x ^ 3 + 0.2 * x + 80
}
g <- function(x, t=1, f=parent.frame()$f) {
exp(-f(x) / t)
}
test <- function(g=parent.frame()$g, t=1) {
g(1,t)
}
test()
[1] 8.560335e-37
반응형
'development' 카테고리의 다른 글
Android Studio-전체 .idea 디렉토리가 git ignore에 있어야합니까? (0) | 2020.07.03 |
---|---|
경고 : [옵션] 부트 스트랩 클래스 경로가 -source 1.5와 함께 설정되지 않았습니다. (0) | 2020.07.03 |
"x <y <z"가 "x <y 및 y <z"보다 빠릅니까? (0) | 2020.07.03 |
웹 페이지에서 사용 된 정의 된 글꼴 중 하나를 감지하는 방법은 무엇입니까? (0) | 2020.07.03 |
파이썬 버퍼 타입은 무엇입니까? (0) | 2020.07.03 |