全部,
我是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(对象),我得到:
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(“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"
在这里,“最后”是月数。虽然我确实相信我会以某种方式管理我需要做的事情,但是我仍然不明白上面的结果意味着什么。
我还搜索了StackOverflow,但是大多数结果都涉及在JAVA中返回Class。
我有三个问题:
问题1)如果有人可以提供示例,这样我就可以理解class()的输出,那将是非常棒的
问题2)如果有人可以向片段提供问题1中讨论的概念的应用,我也将不胜感激。这样,我就可以将这个概念永久地记在脑海中。
问题3)如果您知道一本涉及此类概念的书,我将不胜感激。我正在关注Kabackoff的《 R in Action》,Norman Matloff和StackOverflow的《 R in Action》。
在此先感谢您的帮助。
(添加)
这是另一件令人困惑的事情:
当我这样做时:
AP<-AirPassengers
class(AP)
[1] "ts"
我将“ts”作为类类型。没有显示继承的类。我真的迷路了。请帮我!
最佳答案
这不是基于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 Server)的不同方法的描述。
更正。该软件包未命名为tibbleR
对于您的最后一个问题(请注意,SO中不赞成使用多部分问题),您可以看到?inherits
有时但不总是告诉您是否object =是“隐式”类的成员,并且您可能需要使用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