2013-08-07 13 views
8

Chciałbym utworzyć niestandardowy obiekt Stat dla ggplot2. (W szczególności chciałbym stworzyć gładszą, która działa inaczej niż te, które pozwala na stat_smooth - na przykład bez funkcji modelowania y~x - ale istnieją inne niestandardowe statystyki, które chciałbym utworzyć, nawet gdyby istniało obejście dla mojego konkretnego przypadku).Tworzenie niestandardowego obiektu Stat w ggplot2

znalazłem this suggested solution from Hadley Wickham:

StatExpo <- proto(Stat, { 
    objname <- "expo" 
    desc <- "Exponential smoothing" 
    default_geom <- function(.) GeomLine 

    calculate_groups <- function(., data, scales, variable="x", ...) { 
    data$y <- HoltWinters(data$x, ...) 
    } 
}) 
stat_expo <- StatExpo$new 

Jednak gdy próbuję go uzyskać:

Error in proto(Stat, { : object 'Stat' not found 

Po rozglądając się po ggplot code znalazłem where Stat is defined. Jednak obiekt Stat jest, o ile mogę to stwierdzić, never exported from ggplot2.

Mogę napisać nowy obiekt stat w folderze ggplot2/R, a następnie ponownie zainstalować pakiet, ale oczywiście byłoby to uciążliwe i sprawiłoby, że rozwiązanie bardzo trudno byłoby udostępnić innym. Jak mogę utworzyć niestandardowy obiekt Stat poza obszarem nazw ggplot? Aby uzyskać dostęp do obiektu nie wyeksportowanego, można użyć

+0

Czy "ggplot2 ::: Stat' help? – baptiste

+0

@baptiste Nope, 'Błąd: 'Stat' nie jest eksportowanym obiektem z 'namespace: ggplot2''. Czy Ci to pasuje? –

+0

działa z trzema ':::' – baptiste

Odpowiedz

4

ggplot2:::Stat.

+2

Konieczność ::: uniemożliwi niestety włączenie funkcji zdefiniowanej przez użytkownika do pakietu, który ma zostać przesłany do CRAN. Kontrole CRAN nie pozwalają na :::. –

1
getFromNamespace('Stat','ggplot2') 
Powiązane problemy