首页 文章

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

提问于
浏览
4

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

Example 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"

我很擅长这个 . 据我所知,这种数据结构属于数据框架类型 .

Example 2 现在,我最近遇到了Wickham 's tibbleR package. Here' s我如何将数据帧转换为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包阅读了's online pdf, but I don'认为他们已经解释了这一点 . 我相信他们认为人们知道上述意思 .

我在https://blog.rstudio.org/2016/03/24/tibble-1-0-0/上阅读了RStudio的博客,但我不认为他们已经描述了上述输出意味着什么 . 我也读过诺曼马特洛夫's book, but I don'认为这是涵盖的 . 我也用Google搜索了"tbl_df" "tbl" "data.frame",但大部分结果都与某段代码不起作用有关 . 我无法找到上述输出意味着什么的解释 .

Example 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 .

我有三个问题:

Question 1) 如果有人可以提供一个例子以便我能理解class()的输出,那将是很棒的

Question 2) 如果有人可以提供问题1中讨论的概念应用的片段,我也很感激 . 这样,我可以永远记录这个概念 .

Question 3) 如果你知道一本涉及这些概念的书,我会很感激 . 我跟随Kabackoff的R in Action,R by Norman Matloff和StackOverflow .

非常感谢您的帮助 .


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

AP<-AirPassengers
class(AP)
[1] "ts"

我把“ts”作为 class 类型 . 未显示继承的类 . 我真的迷路了 . 请帮我!

1 回答

  • 1

    这不是't something from base R but rather a feature of what is often referred to as the ' 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中不赞成)你可以看到 ?inherits 有时但不总是告诉你对象=是否是"implicit"类的成员,你可能需要使用 is- 函数来测试for 'numeric':

    > 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
    

相关问题