Pergunta

Entendo que em R você tem alguns tipos de dados básicos (vector, matrix, list, data.frame) e nos pacotes R você tem alguns tipos avançados chamados classe S3 ou classe S4 (ppp,owin, spatialPointsDataFrame e muitos outros.Algumas das funções nos pacotes R funcionam apenas com argumentos de tipo especial.

Preciso de explicações sobre a conversão entre diferentes classes e tipos de dados em R:

Às vezes posso usar um código como:

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

Mas em outros casos devo usar um código como:

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

Como posso saber qual sintaxe do as usar para qual objeto?Ou é a sintaxe: as.foo(originalObject) sempre equivalente a as(originalObject, "foo") (aqui foo representa a classe para a qual desejo converter meu objeto para poder usar em uma função que exige que seu argumento seja um foo aula)

Digamos que eu use um pacote em R com uma classe foo.E eu tenho uma variável v que pertence à classe bar (em outras palavras, class(v) é bar).Como posso saber se a função as(v,"foo") vai funcionar?

Foi útil?

Solução

as.data.frame é um método S3 que você pode verificar foo usando :

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

Mas acho que você está procurando (como está comentado)

showMethods(coerce)

Isso lhe dará uma lista de funções de coerção predefinidas.

Para definir sua função coagir, uma opção (existem muitas opções como setIS , coerce<- e coerção implícita por meio de herança) é usar setAs.Aqui um exemplo:

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")

Agora, se eu verificar usando:

showMethods(coerce)

Você recebe uma entrada com:

from="track", to="numeric"

Para uma melhor explicação você deve ler ajuda("como") mas o assunto não é muito simples.

EDITAR Para mostrar apenas as entradas com track você pode fazer isso, por exemplo:

cat(grep('track',showMethods(coerce,printTo=FALSE),value=TRUE))
from="track", to="numeric"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top