표준 S3 메서드 디스패치 시스템을 데이터 프레임과 수식에 대해 하나의 패키지가있는 내 패키지 (OneR)에 추가하는 중입니다.다른 인수로 S3 메서드를 정의하는 모범 사례
내가 가진 문제는 두 가지 방법에 대해 서로 다른 인수가 있다는 것입니다. 데이터가 이미 x
인수에 있기 때문에 데이터 프레임 메서드를 호출 할 때 data
인수가 필요하지 않습니다. data
은 수식 메서드를 호출 할 때만 필요합니다.
나는 이런 식으로했다 :
Usage
optbin(x, data, method = c("logreg", "infogain", "naive"), na.omit = TRUE)
## S3 method for class 'formula'
optbin(x, data, method = c("logreg", "infogain", "naive"),
na.omit = TRUE)
## S3 method for class 'data.frame'
optbin(x, data = x, method = c("logreg", "infogain",
"naive"), na.omit = TRUE)
Arguments
x either a formula or a data frame with the last column containing the target variable.
data data frame which contains the data, only needed when using the formula interface because otherwise 'x' will already contain the data.
method character string specifying the method for optimal binning, see 'Details'; can be abbreviated.
na.omit logical value whether instances with missing values should be removed.
내가 처음 난 그냥 데이터 프레임 방식의 data
인수를 떠날 수 있다고 생각하지만 패키지를 검사 할 때는 UseMethod
에 있기 때문에 내가 경고가 기능 ... 내가 거기에 그것을 떠날 때 방법 사이의 불일치 때문에 다른 경고를 얻을. 나는 또한 ...
을 시도했지만 나는 또한 도움이 될 것보다 더 많은 사용자를 혼란스럽게 할 것입니다.
그러나 데이터 프레임 방법에서 data = x
인수 때문에 이상적인 솔루션을 찾지 못했습니다. 그것은 사람들을 혼란스럽게 할 수 있으며 오류의 잠재적 인 원인입니다.
내 질문
상황을 해결하는 가장 좋은 방법은 무엇인가, 즉 서로 다른 인수로 두 가지 방법이있을 때?
'optbin.data.frame'에서'data = NULL'을 사용하고 사용하지 않는 것으로 문서화 할 수 없습니까? 비슷한 것은'data.table :: data.table'의'drop' 매개 변수에 대해서도 비슷합니다 : * "data.table에서 사용하지 마십시오. 사용하지 마십시오. data.table이 data.frame에서 상속 받기 때문에 여기에 있어야합니다. "*. – nrussell
@nurlsell : 이것이 유효한 접근 방법이라고 생각합니다. 답변을 작성해 주시겠습니까? 감사합니다. – vonjd