나는 S4 클래스를 사용하여 패키지를 작성했으며 이러한 정의 된 클래스와 함께 rbind, cbind 함수를 사용하려고합니다.패키지의 s4 클래스와 함께 cbind, rbind를 사용하는 적절한 방법
바로 내가 대신 rbind2
및 cbind2
을 정의 S4 방법으로 rbind
및 cbind
을 정의 할 수있을 것 같지 않기 때문에 :
setMethod("rbind2", signature(x="ClassA", y = "ANY"),
function(x, y) {
# Do stuff ...
})
setMethod("cbind2", signature(x="ClassA", y = "ANY"),
function(x, y) {
# Do stuff ...
})
가 ?cbind2
에서 나는이 기능을 대체 할 methods:::bind_activation
를 사용하여 활성화 할 필요가 있음을 알게 베이스에서 rbind 및 cbind. 예상대로이 작동
.onLoad <- function(...) {
# Bind activation of cbind(2) and rbind(2) for S4 classes
methods:::bind_activation(TRUE)
}
:
은 내가.onLoad
기능을 사용하여 패키지 파일 R/zzz.R에 전화를 포함. 나는 참고 제거하고 적절한 방법이 cbind 정의하는 방법과 무엇을 얻을 수있는 방법
* checking dependencies in R code ... NOTE
Unexported object imported by a ':::' call: 'methods:::bind_activation'
See the note in ?`:::` about the use of this operator.
그러나, 실행 R의 CMD 나는 방법에 안 export 기능을 사용하고 있기 때문에 지금은 다음과 같은 메모를 얻고 확인 패키지에 포함 된 S4 클래스를 확인 하시겠습니까?
'rbind'와'cbind' 메소드를 추가하려고하는 S4 클래스의 클래스 정의 (예 :'setClass ("ClassA", ...)')를 포함 하시겠습니까? 그것은 당신의 문제에 대한 해결책을 쉽게 만들어 줄 것입니다. – nrussell
클래스 정의는 메소드 선택/디스 패칭의 문제 일 뿐이므로이 경우에는 중요하지 않습니다. 따라서 setClass ("ClassA", representation (a = "numeric"))와 같은 정의를 사용할 수 있습니다. – user625626
또한 왜 "* ... rbind 및 cbind를 S4 메서드로 직접 정의 할 수없는 것 같은지 설명 할 수 있습니까?"- 아마도이 코드를 구현하려고 시도하는 코드를 추가 할 수 있습니까? – nrussell