我理解在R中你有一些基本数据类型(vector, matrix, list, data.frame
),然后在R包中你有一些称为S3-class或S4-class(ppp
,{{1}的高级类型R}包中的一些函数只能使用特殊类型的参数。
owin
和许多其他函数。
我需要解释在R中的不同类和数据类型之间进行转换:
有时我可以使用如下代码:
spatialPointsDataFrame
但在其他情况下,我必须使用如下代码:
m = c(1, 2, 3, 4)
df = as.data.frame(m)
我如何知道shp = readShapeSpatial("polygons.shp")
win = as(shp,"owin")
的哪个语法用于哪个对象?
或者是语法:as
总是等同于as.foo(originalObject)
(这里foo代表我想要将对象转换为的类,以便我可以在需要其参数的函数中使用{{1} 1}} class)
假设我在R中使用了一个类as(originalObject, "foo")
的包。我有一个属于foo
类的变量foo
(换句话说,v
是bar
)。我怎么知道函数class(v)
是否有效?
答案 0 :(得分:3)
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"
为了更好的解释,你应该阅读 help(“as”),但主题不是很简单。
编辑要仅显示包含曲目的条目,您可以执行此操作,例如:
cat(grep('track',showMethods(coerce,printTo=FALSE),value=TRUE))
from="track", to="numeric"