5
nls
을 사용하여 일부 기하 급수적 인 데이터에 적합합니다.R :`nls`에서 오류 잡기
내가 사용하는 코드는 다음과 같습니다
fit <- nls(y ~ expFit(times, A, tau, C), start = c(A=100, tau=-3, C=0))
expFit
expFit <- function(t, A, tau, C)
{
expFit <- A*(exp(-t/tau))+C
}
이 시작 매개 변수를 제공하는 내 데이터의 대부분 잘 작동 ((100)으로 정의된다, -3 및 0) 잘 작동합니다. 그러나 때때로 이러한 매개 변수를 사용하지 못하는 데이터가 있는데 nls
(예 : '단수 그라디언트'또는 이와 유사한 것)에서 오류가 발생합니다. 이러한 오류를 "catch"하는 방법은 무엇입니까? ...
어떤 아이디어를
나는fit <- NULL
fit <- nls(...)
if (is.null(fit))
{
// Try nls with other starting parameters
}
그런 짓을하려고하지만 nls
가 실행 및 실행되지 않습니다 nls
후 코드를 중지하는 것 때문에이 작동하지 않습니다?
덕분에 나는 보통이 트릭을 사용
좋아! 그게 바로 내가 필요로하는 것입니다! 'silent = "TRUE"매개 변수를 추가하기 때문에 오류가 출력되지 않습니다. – nico
@ kohske 답변 논리가 합리적입니다. 'try' 명령에 대해 아는 것이 유용하지만, 네 번째 줄에 nls 전화가 올 것이라고 예상하고 거기에 나타나는 nul 함수에 익숙하지 않습니다. 빠른 검색은 NUL이 무엇을하는지 찾지 못했습니다. 이 점에 대해 더 자세히 알 수있는 힌트가 있습니까? 어쩌면 어떤 패키지가 필요한지 모르겠습니다. –
@JasonWhyte 그건 그냥 오타입니다. 나는''try (fit <- nls (...)) '를 의미하고'nls'가 오류를 유발할 때 fit은 NULL이 될 것이다. – kohske