Was ist der Unterschied zwischen as.character () und as (, "character") in R?

8
In der Oberfläche scheinen beide dasselbe zu tun. Aber es scheint, dass letzteres as(,"character") stärker ist.

Als ein Beispiel betrachten Sie folgendes:

%Vor%

Während as(temp, "character") gibt

%Vor%     
dimitris_ps 10.04.2015, 16:20
quelle

1 Antwort

9

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

%Vor%

Auf der anderen Seite gibt es

%Vor%

Hier sehen wir die Methoden as.data.frame() und as.raster() , um eine Matrix zu erzwingen.

    
Martin Morgan 10.04.2015, 18:22
quelle

Tags und Links