as(,"character")
stärker ist.
Als ein Beispiel betrachten Sie folgendes:
%Vor% Während as(temp, "character")
gibt
as.character()
ist ein generischer S3, während as()
eine Funktion ist, die im Methodenpaket für S4-Generika und -Methoden definiert ist.
Der Autor einer S3-Klasse hat keinen Grund, eine S4-Zwangsmethode zu schreiben, also zum Beispiel
%Vor%aber
%Vor%Für S4-Klassen kann (d. h. der Paketentwickler) sowohl S3- als auch S4-Methoden für die Zwangsführung bestimmter Klassen schreiben (und sollte dies wirklich tun); Ein gemeinsames Paradigma ist
%Vor% In Ihrem Beispiel hat der Autor (von XML) eine setAs-Funktion ohne das Äquivalent von S3 zur Verfügung gestellt. Daher erhalten Sie eine spezielle Behandlung mit as()
, aber Standard (d. h. Fehler) bei Verwendung von as.character()
.
Es gibt keine allgemeine Regel, die "mächtiger" ist; es wäre überhaupt nicht überraschend, Beispiele zu finden, selbst in der Basis R und im Methodenpaket, wo sich as.X und as (, "X") anders und sogar in einer logisch inkonsistenten Weise verhalten.
In der nächsten Version von R (3.2.0) können Sie
sagen %Vor% wobei "coerce" ein Hinweis darauf ist, dass es für as(temp, ...")
eine S4-Methode gibt. Die tatsächlichen Methoden sind
Auf der anderen Seite gibt es
%Vor% Hier sehen wir die Methoden as.data.frame()
und as.raster()
, um eine Matrix zu erzwingen.
Tags und Links r