Вопрос

Я понимаю, что в R у вас есть несколько базовых типов данных (vector, matrix, list, data.frame) и затем в пакетах R у вас есть несколько расширенных типов, называемых S3-class или S4-class (ppp,owin, spatialPointsDataFrame и многие другие.Некоторые функции в пакетах R работают только с аргументами специального типа.

Мне нужно объяснение о преобразовании между различными классами и типами данных в R:

Иногда я могу использовать такой код, как:

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

Но в других случаях я должен использовать такой код, как:

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

Как мне узнать, какой синтаксис as использовать для какого объекта?Или это синтаксис: as.foo(originalObject) всегда эквивалентно as(originalObject, "foo") (здесь foo обозначает класс, в который я хочу преобразовать свой объект, чтобы я мог использовать в функции, для которой требуется, чтобы ее аргументом был a foo класс)

Допустим, я использую пакет в R с классом foo.И у меня есть переменная v это относится к классу bar (другими словами, class(v) является bar).Как мне узнать, работает ли функция as(v,"foo") сработает ли?

Это было полезно?

Решение

as.data.frame это метод S3, который вы можете проверить на foo используя :

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

Но я думаю, что вы ищете (как это прокомментировано)

showMethods(coerce)

Это даст вам список предопределенных функций принудительного использования.

Чтобы определить вашу функцию принуждения , используйте один вариант (существует множество вариантов , таких как setIS , coerce<- и неявное принуждение через наследование) заключается в использовании setAs.Вот пример:

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

Теперь, если я проверю, используя :

showMethods(coerce)

Вы получаете запись с :

from="track", to="numeric"

Для лучшего объяснения вы должны прочитать справка ("как") но тема не очень простая.

Редактировать Чтобы показывать только записи с дорожкой, вы можете сделать это, например:

cat(grep('track',showMethods(coerce,printTo=FALSE),value=TRUE))
from="track", to="numeric"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top