gpt4 book ai didi

r - Class() 在 R 中返回多个多个类名

转载 作者:行者123 更新时间:2023-12-04 10:57:59 25 4
gpt4 key购买 nike

全部,
我是 R 的初学者。我不太熟悉 R 中类的组织方式。我注意到一些 class() 调用返回一个类类型,而其他调用返回多个类名。

示例 1

{我的对象名称是“sassign”}
这是我的数据:

 acctnum gender state   zip zip3 first last book_ nonbook_ total_ purch child youth cook do_it refernce art geog buyer
1 10001 M NY 10605 106 49 29 109 248 357 10 3 2 2 0 1 0 2 no
2 10002 M NY 10960 109 39 27 35 103 138 3 0 1 0 1 0 0 1 no
3 10003 F PA 19146 191 19 15 25 147 172 2 0 0 2 0 0 0 0 no
4 10004 F NJ 07016 070 7 7 15 257 272 1 0 0 0 0 1 0 0 no
5 10005 F NY 10804 108 15 15 15 134 149 1 0 0 1 0 0 0 0 no
6 10006 F NY 11366 113 7 7 15 98 113 1 0 1 0 0 0 0 0 yes

现在,如果我执行上面的 class(object),我会得到:
class(sassign)
[1] "data.frame"

我很擅长这个。我知道这个数据结构是数据框类型。

示例 2
现在,我最近遇到了 Wickham 的 tibbleR 包。
这是我将数据框转换为 Tibble 的方法:
tib_sassign<-as_data_frame(sassign)
class(tib_sassign)
[1] "tbl_df" "tbl" "data.frame"

这是我迷路的地方。我不知道 tbl_df 和 tbl 之间的区别。但是,我的假设是 Tibble 包通过返回可用作 tibble ("tbl")、数据框 ("data.frame") 或 tbl_df(我不知道)的对象(类似于抽象类)使我们的生活更轻松tbl_df 是什么意思)。我通读了 dplyr 包的在线 pdf,但我认为他们没有解释这一点。我相信他们假设人们知道上面的意思。

我在 https://blog.rstudio.org/2016/03/24/tibble-1-0-0/ 上阅读了 RStudio 的博客但我认为他们没有描述上述输出的含义。我也读过 Norman Matloff 的书,但我认为这本书没有涵盖。
我还用谷歌搜索了“tbl_df”“tbl”“data.frame”,但大多数结果都与某些无法工作的代码有关。我找不到上述输出含义的解释。

示例 3
我现在已经开始研究 R 中的时间序列。这就是我必须开始这个线程的地方。
这是我所做的:
t_sassign <-data.frame(group_by(sassign,last))
t_sassign<-ts(t_sassign,start = c(2014,1),frequency = 12)
class(t_sassign)
[1] "mts" "ts" "matrix"

这里,“last”是月数。虽然我相信我会以某种方式管理我需要做的事情,但我仍然不明白上述结果的含义。

我也搜索过StackOverflow,但大部分结果都在谈论在JAVA中返回Class。

我有三个问题:

问题 1) 如果有人可以提供一个示例以便我可以理解 class() 的输出,那就太棒了

问题 2) 如果有人可以提供问题 1 中讨论的概念应用的片段,我也将不胜感激。这样,我可以永远在我的大脑中记录这个概念。

问题 3) 如果您知道一本涉及此类概念的书,我将不胜感激。我正在关注 Kabackoff 的 R in Action、Norman Matloff 的 R 和 StackOverflow。

非常感谢您的帮助。

(添加)
这是另一个令人困惑的事情:
当我这样做时:
AP<-AirPassengers
class(AP)
[1] "ts"

我得到了“ts”作为类(class)类型。未显示继承的类。我真的很失落。请帮我!

最佳答案

这不是来自基础 R 的东西,而是通常被称为“hadleyverse”的特征。 Hadley 设计了 ​​dplyr包以使用特殊版本的数据帧。见:http://www.rdocumentation.org/packages/tibble/versions/1.1/topics/tibble-package有关 tbl_df 类的描述。该类具有 print 的版本、"["和 "[["与 base-R 中的那些函数不同,这些函数通常会按照那里的描述处理数据帧。不同的打印格式和规则,$[[永远不要做部分名称匹配,子集总是返回一个 data.frame。

回复:对 tbl 类的单独描述。到目前为止,我发现的内容表明 dplyr -package 文档是查看的地方,因为它有 as.tbl以及不同类型数据源(如 SQL 服务器)的不同方法的描述。

一个更正。该软件包未命名 tibbleR
对于你最后一个问题(注意多部分问题在 SO 中是皱眉的)你可以看到 ?inherits有时但并不总是告诉您 objects= 是否是“隐式”类的成员,并且您可能需要使用 is-测试“数字”的函数:

> AP<-AirPassengers
> class(AP)
[1] "ts"
> inherits(AP, "matrix")
[1] FALSE
> inherits(AP, "numeric")
[1] FALSE
> str(AP)
Time-Series [1:144] from 1949 to 1961: 112 118 132 129 121 135 148 148 136 119 ...
> inherits( as.matrix(AP), "numeric")
[1] FALSE
> inherits( as.matrix(AP), "matrix")
[1] TRUE
> str( as.matrix(AP) )
num [1:144, 1] 112 118 132 129 121 135 148 148 136 119 ...
> inherits( as.matrix(AP), "integer")
[1] FALSE
> is.numeric( as.matrix(AP) )
[1] TRUE
> ?inherits

关于r - Class() 在 R 中返回多个多个类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38795026/

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