gpt4 book ai didi

r - 用as强制R中的类数据类型

转载 作者:行者123 更新时间:2023-12-01 23:59:50 25 4
gpt4 key购买 nike

我知道在 R 中有一些基本数据类型(vector、matrix、list、data.frame),然后在 R 包中有一些高级类型,称为 S3 类或 S4-类(pppowinspatialPointsDataFrame 等。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 的包。我有一个属于 bar 类的变量 v (换句话说,class(v)bar ).我如何知道函数 as(v,"foo") 是否有效?

最佳答案

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

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

但我认为您正在寻找(如评论所述)

showMethods(coerce)

这将为您提供预定义强制函数列表。

要定义强制函数,一个选项(有很多选项,如 setIScoerce<- 和通过继承的隐式强制)是使用 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"

关于r - 用as强制R中的类数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22077684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com