【发布时间】:2014-02-27 18:49:49
【问题描述】:
我知道在 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") 函数是否有效?
【问题讨论】:
-
从这里开始更好地掌握课程:stackoverflow.com/questions/6583265/…
-
如果您在
showMethods("coerce")打印的结果中看到from="foo", to="bar"的条目,您就会知道as(v,"bar")是否有效。或者检查getMethod(coerce, signature=c(from="bar", to="foo"))是否返回函数。或者只是运行as(v, "bar")看看它是否有效;)。 -
(有几个
foo和bar倒过来了,但你明白了。)
标签: r class object syntax coercion