Diese Antwort ist falsch, aber in einer Weise, die mir erhellend waren und vielleicht für andere sein, also werde ich es überlassen.
Wie @Mnel bemerkt, muss die Basis-R-Funktion t()
durch eine andere Funktion mit demselben Namen maskiert werden. Versuchen Sie, die Funktion t()
wieder zu entfernen und t(xx)
erneut auszuführen. Ich garantiere Ihnen, dass Sie die richtigen Ergebnisse erhalten.
Was bekommen Sie, wenn Sie laufen diese:
rm(t)
t(xx)
Wenn (! Trotz meiner Garantie) es funktioniert immer noch nicht arbeiten Sie in vollem Umfang die Version von t()
Sie verwenden möchten, angeben können, wie folgt aus:
base::t(xx)
hier, warum die beiden oben genannten Vorschläge nicht ausreichen
Von ?UseMethod
:
Namespaces können für generische Funktionen Methoden registrieren. Zur Unterstützung dieses ‚UseMethod‘ und ‚NextMethod‘ Suche nach Methoden an zwei Stellen: zuerst in der Umgebung, in der die generischen Funktion genannt wird, und dann in den Basisregistrierungsdaten für die Umgebung, in der die generic ist definiert (normalerweise ein Namespace). So müssen Methoden für eine generische -Funktion in der Umgebung des Aufrufs an die Generika verfügbar sein, oder sie müssen registriert sein. (Es spielt keine Rolle, ob sie in der Umgebung zu sehen sind, in denen die allgemeinen definiert ist.)
geht ich davon aus, dass S3 Methode Dispatch für Methoden wie t.default()
ersten sieht in base:::.__S3MethodsTable__.
und dann vielleicht in asNamespace("base")
vor in der rufenden Umgebung suchen, während das Gegenteil näher an der Wahrheit ist.
Bearbeiten von GSEE
Hier ist eine interaktive Sitzung zu zeigen, was das Problem gewesen sein könnte.
> 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
Haben Sie die Funktion "t" in Ihrem Arbeitsbereich neu definiert? – mnel
, d. H. Als etwas wie 't <- Funktion (...) rep (sqrt (.5), 2)' –
Ähnliches? http://Stackoverflow.com/a/12019678 – GSee