2017-11-03 15 views
0

제 질문은이 하나와 관련이 있습니다 : Function that returns a function in R 하지만 R 패키지를 만들려고합니다. 나는 NInput이라는 sysdata.rda에 저장된 데이터 프레임을 사용하는 다음과 같은 함수를 가지고있다. approxfun() 함수를 사용하여 함수를 반환하고 싶습니다. 이 패키지의 사용자는 Nfun (날짜)를 호출 할 수 있기를 원합니다. 여기서 날짜는 approxfun()으로 작성된 함수의 일반적인 입력이됩니다.사용자 정의 R 패키지의 함수를 반환하는 함수

#' A function to return interpolated N input data 
#' 
#' function to return interpolated N input data for decimal dates 
#' @param Dates A scalar or vector of decimal input dates 
#' @keywords nitrogen 
#' @export 
#' @examples 
#' Nfun() 

Nfun <- function(){ 
NInput$Date 
NInput$Ninput 
Nfun <- approxfun(NInput$Date,NInput$Ninput,rule=2) 
} 

그러나, 나는이 기능으로 내 패키지를 설치하고 패키지를로드 한 후 내 R 세션에서 (1900) Nfun를 호출 할 때, 내가 얻을 :

Error in Nfun(1900) : unused argument (1900) 

내가

Nfun <- Nfun() 
을 설정하는 경우

Nfun.R 스크립트 외부, 패키지를로드 한 후 내 활성 R 세션에서 내 기능이 전역 환경에 나타나고 전화 할 수 있습니다.

Nfun(1900) 
[1] 0.7846106 

하지만 사용자가이 작업을 수행하기를 원하지 않습니다. 나는 패키지 기능을 정의하는 방법과 관련하여 몇 가지 기본적인 실수를 저지르고 있다고 생각하지만, 나는 혼란 스럽다.

+0

당신은 그 이름으로 엉망진창을 만들고 있습니다. ** 모든것 **'Nfun'! –

+0

https://stackoverflow.com/q/20223601/1412059 – Roland

답변

1

Nfun의 구현에는 인수가 없으므로 오류가 발생합니다.

정확하게 이해하면 approxfunNfun 함수를 사용하여 사용자 입력 함수의 값을 반환합니다. 맞습니까? 그렇다면 다음이 작동해야합니다.

Nfun <- function(x){ 
    NInput$Date 
    NInput$Ninput 
    Nfun <- approxfun(NInput$Date,NInput$Ninput,rule=2)(x) 
} 
+0

개체를 개체에 할당 할 필요없이 값을 인쇄하고 싶습니다. 당신은 다음과 같은 것을 권할 것입니다 : print (Nfun (x))? – user29609

+0

'print'가 작동합니다. 'cat'과'message'는 다른 후보가 될 것입니다. –