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

wat*_*wer 5 r class object

所有人,我是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
Run Code Online (Sandbox Code Playgroud)

现在,如果我在上面做class(对象),我得到:

class(sassign)
[1] "data.frame"
Run Code Online (Sandbox Code Playgroud)

我对此很好。我知道此数据结构是数据帧类型。

示例2 现在,我最近遇到了Wickham的tibbleR软件包。这是我将数据帧转换为Tibble的方法:

tib_sassign<-as_data_frame(sassign)
class(tib_sassign)
[1] "tbl_df"     "tbl"        "data.frame"
Run Code Online (Sandbox Code Playgroud)

这是我迷路的地方。我不知道tbl_df和tbl之间的区别。但是,我的假设是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"
Run Code Online (Sandbox Code Playgroud)

在这里,“最后”是月数。尽管我确实相信我会以某种方式管理我需要做的事情,但是我仍然不明白上面的结果意味着什么。

我还搜索了StackOverflow,但是大多数结果都涉及在JAVA中返回Class。

我有三个问题:

问题1)如果有人可以提供示例,这样我就可以理解class()的输出,那将是非常棒的

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

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

在此先感谢您的帮助。


(添加)这是另一件令人困惑的事情:当我这样做时:

AP<-AirPassengers
class(AP)
[1] "ts"
Run Code Online (Sandbox Code Playgroud)

我将“ ts”作为类类型。没有显示继承的类。我真的迷路了。请帮我!

42-*_*42- 4

这不是来自 R 基础的东西,而是通常被称为“hadleyverse”的一个功能。Hadley 设计了该dplyr包来处理特殊版本的数据帧。有关 tbl_df 类的说明,请参阅:http://www.rdocumentation.org/packages/tibble/versions/1.1/topics/tibble-package 。该类具有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
Run Code Online (Sandbox Code Playgroud)