所有,
我是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(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的书,但我不认为这是涵盖的.
我还使用Google搜索“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,R by Norman Matloff和StackOverflow.
非常感谢您的帮助.
(添加)
这是另一个令人困惑的事情:
当我做的时候:
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.
Re:对tbl类的单独描述.到目前为止,我发现了dplyr-package文档是值得关注的地方,因为它有as.tbl和不同类型数据源(如SQL服务器)的差异方法描述.
纠正.该包未命名为tibbleR
对于你的最后一个问题(注意多部分问题在SO中不受欢迎)你可以看到?继承有时但不总是告诉你对象=是否是“隐式”类的成员,你可能需要使用一个是 – 测试’数字’的功能:
> 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