2011-11-25 2 views
13

R에 대한 kool의 한 가지는 함수 이름을 입력하면 구현을 보게됩니다. 그래서 그것은 XTS의 align.time 메소드를 호출합니다 의미하지 않는다,여기서 useMethod의 의미는 무엇입니까?

> library(xts) 
> align.time 
function (x, ...) 
{ 
    UseMethod("align.time") 
} 
<environment: namespace:xts> 

는 X XTS 개체입니다 ...하지만 그게 내가 찾고 있어요 무엇 :하지만이 사람은 반복적으로 나를 혼란! (xts::align.time를 입력하면 정확히 동일한 응답을 제공합니다.)

+2

참조이 매우 비슷한 질문을 : http://stackoverflow.com/q/5835312/602276 HTTP의 – Andrie

+1

원 7 : // WWW. burns-stat.com/pages/Tutor/R_inferno.pdf를 사용하면 도움이 될 것입니다. 일반적인 함수와 메소드가 무엇인지에 대한 감각. –

+0

@PatrickBurns 감사합니다. 유용한 읽음새처럼 보입니다. –

답변

16

짧은 대답은 당신이 기능 xts:::align.time.xts를 찾고 있다는 것입니다.

더 이상 대답

methods를 호출하여 align.time을 위해 존재하는 방법을 찾을 수 있다는 것입니다 :

> methods(align.time) 
[1] align.time.POSIXct* align.time.POSIXlt* align.time.xts*  

    Non-visible functions are asterisked 

이 네임 스페이스에서 내 보낸되지 않는 방법 align.time.xts이 있음을 알려줍니다. 이 시점에서 당신은 패키지 xts에서 찾을 수 있습니다 추측 아마 수 있지만 getAnywhere으로 확인할 수 있습니다 :

> getAnywhere("align.time.xts") 
A single object matching 'align.time.xts' was found 
It was found in the following places 
    registered S3 method for align.time from namespace xts 
    namespace:xts 
with value 

function (x, n = 60, ...) 
{ 
    if (n <= 0) 
     stop("'n' must be positive") 
    .xts(x, .index(x) + (n - .index(x)%%n), tzone = indexTZ(x), 
     tclass = indexClass(x)) 
} 
<environment: namespace:xts> 

당신은 물론, 소스를 직접 읽을 수 있지만 기능이기 때문에 내보낼 수 없습니다, 당신은 package:::function (즉, 세 가지 콜론)를 사용해야합니다

> xts:::align.time.xts 
function (x, n = 60, ...) 
{ 
    if (n <= 0) 
     stop("'n' must be positive") 
    .xts(x, .index(x) + (n - .index(x)%%n), tzone = indexTZ(x), 
     tclass = indexClass(x)) 
} 
<environment: namespace:xts> 
7

align.time()이 너무 xts::align.timealign.time 같은 일이다는 XTS에서 네임 스페이스 내 보냅니다. 당신은이 패키지에 제공되는 클래스 "xts"의 객체에 대한 align.time() 방법이며 그가 (그것은 단지 S3 방법으로 등록) 네임 스페이스에서 내 보낸되지 않도록주의 할 필요가 :이 방법

> xts:::align.time.xts 
function (x, n = 60, ...) 
{ 
    if (n <= 0) 
     stop("'n' must be positive") 
    .xts(x, .index(x) + (n - .index(x)%%n), tzone = indexTZ(x), 
     tclass = indexClass(x)) 
} 
<environment: namespace:xts> 

"xts" 개체를 align.time()에 전달하면 호출됩니다.

align.time()을 호출하면 UseMethod()은 가능한 경우 "align.time" 메서드의 검색을 설정하고 첫 번째 인수로 제공된 개체 클래스에 대해 호출합니다. UseMethod이 정확히 무엇을하고 있는지 생각하고 있습니다. 두 가지 다른 방식으로 같은 함수 (generic)를 보면 혼란스러워 할 것입니다.

+0

+1을 수정하면 ;-) – Andrie

+1

:-) 바로 당신에게 돌아갑니다. 또한 영업 사원은 수락을 결정할 때 각 담당자 프로필의 첫 번째 파생어를 고려해야합니다. 늦게 앞서 차를 타고 있습니다! ;-) –