Ta odpowiedź jest błędna, ale w taki sposób, aby były pouczające dla mnie i może być z innymi, więc zostawię go.
Jak odnotował @mnel, podstawowa funkcja R t()
musi być zamaskowana przez inną funkcję o tej samej nazwie. Spróbuj ponownie usunąć funkcję t()
i ponownie wykonaj t(xx)
. Gwarantuję, że uzyskasz poprawne wyniki.
Co otrzymasz po uruchomieniu tego:
rm(t)
t(xx)
if (! Pomimo mojego gwarancji) to nadal nie działa, można w pełni określić wersję t()
chcesz użyć, na przykład:
base::t(xx)
Oto dlaczego obydwa powyższe propozycje są niewystarczające
Od ?UseMethod
:
Przestrzenie nazw mogą zarejestrować metody funkcji generycznych. Aby wesprzeć ten „UseMethod” i szukaj „NextMethod” metod w dwóch miejscach: najpierw w środowisku, w którym funkcja rodzajowy nazywa i następnie w bazie danych rejestracyjnych dla środowiska, w którym generic jest zdefiniowany (zazwyczaj przestrzeń nazw). Zatem metody dla ogólnej funkcji muszą być dostępne w środowisku połączenia z generic lub muszą być zarejestrowane. (Nie ma znaczenia, czy są one są widoczne w środowisku, w którym generyczny jest zdefiniowana.)
I błędnie zakłada, że metoda S3 wysyłka szuka sposobów jak t.default()
pierwszej w base:::.__S3MethodsTable__.
i następnie Być może w asNamespace("base")
przed patrząc w środowisku wywołującym, podczas gdy rewers jest bliższy prawdy.
Edit z GSEE
Oto sesji interaktywnej wykazać co mogło być problemem.
> t <- function(x, ...) print("generic masked")
> t.default <- function(x, ...) print("t.default masked")
> t.matrix <- function(x, ...) print("t.matrix was used")
> t.numeric <- function(x, ...) print("t.numeric was used")
> xx=matrix(c(3,7,4,8),2,byrow=TRUE)
> t(xx)
[1] "generic masked"
> base::t(xx)
[1] "t.matrix was used"
> rm(t.matrix)
> base::t(xx)
[1] "t.numeric was used"
> rm(t.numeric)
> base::t(xx)
[1] "t.default masked"
> rm(t.default)
> base::t(xx)
[,1] [,2]
[1,] 3 4
[2,] 7 8
Czy na nowo zdefiniowałeś funkcję 't' w swoim obszarze roboczym? – mnel
tj. Jako coś takiego jak 't <- function (...) rep (sqrt (.5), 2)' –
Podobne do tego? http://stackoverflow.com/a/12019678 – GSee