使用as强制R中的类数据类型

使用as强制R中的类数据类型,r,class,object,syntax,coercion,R,Class,Object,Syntax,Coercion,我知道在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

我知道在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")
但在其他情况下,我必须使用如下代码:

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中使用一个带有class
foo
的包,我有一个属于class
bar
的变量
v
(换句话说,
class(v)
bar
),我如何知道函数
是否为(v,“foo”)
是否有效?

as.data.frame
是一种S3方法,您可以使用以下方法检查
foo

getS3method('as.data.frame','foo')
但我认为你正在寻找(正如评论所说的)

这将为您提供预定义强制功能的列表


要定义强制函数,有一个选项(这里有许多选项,如
setIS
强制开始,以便更好地掌握类:如果在
showMethods(“强制”)打印的结果中看到一个条目读作
from=“foo”,To=“bar”
,您就会知道
as(v,“bar”)
是否有效
。或者检查
getMethod(强制,signature=c(from=“bar”,to=“foo”)
是否返回一个函数。或者只运行
as(v,“bar”)
,看看它是否有效;)(有一些
foo
bar
是向后的,但你明白了重点。)
showMethods(强制)
几乎就是我要找的。唯一的缺点是列表很长。是否有办法只显示
showMethods(强制)
中包含
to=“bar”
?jirikadlec2您可以看到我的编辑。基本上我过滤showMethods输出。
showMethods(coerce)
from="track", to="numeric"
cat(grep('track',showMethods(coerce,printTo=FALSE),value=TRUE))
from="track", to="numeric"