当前位置: 首页 > 知识库问答 >
问题:

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

申浩广
2023-03-14

总之,我是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现在,我最近看到了韦翰的tibbleR软件包。下面是我如何将数据帧转换为TIBLE的:

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,但我认为他们没有解释这一点。我相信他们认为人们知道上面的意思。

我在上读了RStudio的博客https://blog.rstudio.org/2016/03/24/tibble-1-0-0/但我认为他们没有描述上述输出的含义。我也读过诺曼·马特洛夫的书,但我认为这本书没有涵盖在内。我还在谷歌上搜索了“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)如果有人能提供一个例子,让我能理解类的输出,那就太棒了()

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

问题3)如果你知道一本关于这些概念的书,我将不胜感激。我正在跟随卡巴科夫的《行动中的R》,诺曼·马特洛夫的《行动中的R》和斯塔克沃夫的《行动中的R》。

非常感谢你的帮助。

(补充)还有一件让人困惑的事:当我这么做的时候:

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

我的班级类型是“ts”。未显示继承的类。我真的迷路了。请帮帮我!

共有1个答案

裘臻
2023-03-14

这并不是来自R的东西,而是经常被称为“哈德利诗”的一个特征。Hadley设计了dplyr包来处理数据帧的特殊版本。见:http://www.rdocumentation.org/packages/tibble/versions/1.1/topics/tibble-package有关tbl_df类的说明。该类有不同于base-R中通常处理数据帧的函数的print、“[”和“[[”版本。不同的打印格式和规则,$[[从不进行部分名称匹配,并且子集总是返回一个data.frame。

关于:tbl类的单独说明。到目前为止,我的发现告诉我,dplyr-包文档是可以查看的地方,因为它有as。tbl以及针对不同类型数据源(如SQL Server)的不同方法的说明。

更正。这个包没有命名为tibbleR

对于你的最后一个问题(注意到在SO中多部分问题是不赞成的),你可以看到?继承有时会告诉你一个对象=是否是一个隐式类的成员,你可能需要使用一个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
 类似资料:
  • 我用的是parse.com。每个包里面都有很多钻子,每个品类里面都有很多包。 我卡住了。然后(函数(result,result2,result3)在最后一行。promise可以有多个promise,它是可变的。有没有一种方法可以写出如下内容: 谢谢!

  • 问题内容: 我试图在 JavaScript中 返回两个值。这可能吗? 问题答案: 否,但是您可以返回一个包含您的值的数组: 然后,您可以像这样访问它们: 使用最新的ECMAScript 6语法 *,您还可以更直观地分解返回值: 如果要在每个返回值上贴上“标签”(易于维护),则可以返回一个对象: 并访问它们: 或使用ES6语法:

  • 问题内容: 序言:我知道使用列表或其他集合来返回结果,但是随后我必须遍历列表以将结果取出:请参阅第二个示例 前言2:我正在寻找“ Java不支持…”之外的答案。 我正在寻找一种从Java方法调用返回多个对象的便捷方法。 有点像PHP: 我真的厌倦了在参数中传递持有者对象,例如: 然后: 如果有人想出一种优雅的方法来解决这个问题,那将非常有兴趣。 使用清单 这有两个缺点: 我必须先将清单装在房子的被

  • 问题内容: 我正在尝试序列化以序列化下面包含的json字符串。 我正在使用此gson调用对其进行序列化 我的班主任就是这样。 对于任何其他类变量,它都是这样。当我尝试使用上述调用时,最终会得到具有所有空值的对象。要注意的一件事是json字符串中未提供某些字段,因为不同的api调用提供了这些json字符串的不同部分。我做错了什么? 问题答案: 您提供的JSON根对象具有属性-因此,您有两个选项可以使

  • 问题内容: 我如何使用类型提示来注释一个返回总是返回两个值的函数:a和a ?提示很接近,除了将返回值类型限制为元组,而不是生成器或其他可迭代类型。 我主要是好奇的,因为我想注释一个用于返回多个值的函数,如下所示: 通常函数喜欢做这样的事情(它返回一个元组),但我喜欢的类型暗示要足够灵活,以取代发电机或列表或别的东西返回的元组。 问题答案: 您总是返回 一个 对象;使用只需返回一个元组。 是的,完全

  • 我有一个按类别分组的公司数据集。有些公司有多个类别,可以跨多个列重复。我想知道如何根据类别(比如每个类别的平均值)来分析它们。这是一个示例数据框 我想知道的一项任务是每个类别的平均值。通过关注这个简单的数据集,我知道 cat1 的平均值将是 -0.5。我有一些粗略的方法,但没有完成任务: > 我考虑过将熔体应用于数据。框架,以便类别因子的每个实例都有自己的行(在本例中,维度为10x1,每一行的每个