Domanda

Comprendo che in R hai alcuni tipi di dati di base (vector, matrix, list, data.frame) e quindi nei pacchetti R ha alcuni tipi avanzati chiamati S3-Classe S3 o S4-classe (ppp, owin, spatialPointsDataFrame e molti altri. Alcune delle funzioni Nei pacchetti R funzionano solo con argomenti di tipo speciale.

Ho bisogno di spiegazione sulla conversione tra classi diverse e tipi di dati in R:

A volte posso usare un codice come:

m = c(1, 2, 3, 4)
df = as.data.frame(m)
.

Ma in altri casi devo usare un codice come:

shp = readShapeSpatial("polygons.shp")
win = as(shp,"owin")
.

Come faccio a sapere quale sintassi del as da utilizzare per quale oggetto? O è la sintassi: as.foo(originalObject) sempre equivalente a as(originalObject, "foo") (qui Foo sta per la classe che voglio convertire il mio oggetto in modo da poter utilizzare in una funzione che richiede la sua discussione di essere una classe foo)

Diciamo che uso un pacchetto in r con una classe foo. E ho un v variabile che appartiene a Classe bar (in altre parole, class(v) è bar). Come faccio a sapere se la funzione as(v,"foo") funzionerà?

È stato utile?

Soluzione

as.data.frame è un metodo S3 che è possibile verificare la presenza di foo utilizzando:

getS3method('as.data.frame','foo')
.

Ma penso che tu stia cercando (come è commentato)

showMethods(coerce)
.

Questo ti darà un elenco di funzioni di cooperazione predefinite.

Per definire la funzione di cancellazione della cancellazione, un'opzione (ci sono molte opzioni come setIS, coerce<- e coercizione implicita attraverso l'ereditarietà) è utilizzare setAs.Ecco un esempio:

track <- setClass("track",
                  slots = c(x="numeric", y="numeric"))
setAs("track", "numeric", function(from) from@y)
t1 <- new("track", x=1:20, y=(1:20)^2)
as(t1, "numeric")
.

Ora se controllo usando:

showMethods(coerce)
.

Ottieni una voce con:

from="track", to="numeric"
.

Per una migliore spiegazione dovresti leggere Guida ("come") Ma il soggetto non è molto semplice.

Modifica Per mostrare solo le voci con la traccia che puoi farlo ad esempio:

cat(grep('track',showMethods(coerce,printTo=FALSE),value=TRUE))
from="track", to="numeric"
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top