我知道在 R 中你有一些基本数据类型(vector, matrix, list, data.frame)然后在 R 包中你有一些高级类型,称为 S3 类或 S4 类(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 代表我想要将对象转换为的类,以便我可以在需要其参数为 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