【问题标题】:What are the differences between data.frame, tibble and matrix? [closed]data.frame、tibble 和 matrix 有什么区别? [关闭]
【发布时间】:2020-11-16 10:36:17
【问题描述】:

在 R 中,某些函数仅适用于 data.frame,而其他函数仅适用于 tibblematrix

使用as.data.frameas.matrix 转换我的数据通常可以解决这个问题,但我想知道这三个有什么不同以及为什么我们需要这三个?

【问题讨论】:

  • 矩阵和数据框做不同的事情。一个数据框可以同时包含不同的数据类型,如字符、数字、因子和时间。一个矩阵只能包含一种类型。因此,矩阵在功能方面受到更多限制,但由于它保证为单一类型,因此可以将其作为连续数组存储在内存中,从而实现更高效的计算。 R 没有 tibble - 这是来自外部包的附加组件并继承自数据框,因此两者通常相互兼容。
  • 但是这个问题的性质是征求意见,不能真正有一个规范的答案,所以我将不得不投票结束它作为题外话。
  • 非常感谢您的澄清。这里真的没有意见,只是不知道有什么区别。如果可以使用一种通用的类型来满足所有目的,那么可能有人会想到它。我认为每种不同的类型都必须有利弊。完全出于无知,但如果您认为这种无知是一种意见,您可以关闭它:)
  • @AllanCameron - 我为您编辑了问题以删除任何可能的意见,因为它不是要批评。
  • 矩阵用于线性代数、回归等。而数据框用于表示数据集,就像在关系数据库表中一样。 tibble 不是 R 的一部分,而是 tidyverse 的一部分,“Tibbles 是对数据框架的现代诠释。它们保留了经受住时间考验的功能,并放弃了过去很方便但现在令人沮丧的功能(即将字符向量转换为因子)。”见cran.r-project.org/web/packages/tibble/vignettes/tibble.html

标签: r dataframe matrix tibble


【解决方案1】:

因为它们有不同的用途。

简短的总结:

  • 数据框是等长向量的列表。这意味着,添加列就像将向量添加到列表一样简单。这也意味着虽然每一列都有自己的数据类型,但这些列可以是不同的类型。这使得数据帧可用于数据存储。

  • 矩阵是具有二维的原子向量的特例。这意味着整个矩阵必须具有单一数据类型,这使得它们对代数运算有用。在某些情况下,它还可以使数字运算更快,因为您不必执行类型检查。但是,如果您对数据框足够小心,则差别不会很大。

  • Tibble 是tidyverse 中使用的数据框的现代化版本。他们使用多种技术使它们“更智能”——例如延迟加载。

Long description R 中使用的矩阵、数据帧和其他数据结构。

总结一下:矩阵和数据框都是二维数据结构。这些中的每一个都有不同的目的,因此表现不同。 Tibble 是对广泛传播的 Tidyverse 中使用的数据框架进行现代化改造的尝试。

如果我尝试从技术含量较低的角度重新表述: 每个数据结构都在进行权衡。

  • 为了方便和清晰,数据框牺牲了一些效率。
  • 矩阵很有效,但更难使用,因为它对其数据实施了限制。
  • Tibble 以更高的效率和更多的便利为代价,同时还试图通过尝试将计算推迟到看起来不是它的错误的时间的技术来掩盖上述权衡。

【讨论】:

  • 哇,这真是一个很棒的解释。谢谢你。我以前使用过这三种类型,但我从来不知道它们为什么/如何不同。这是一个很好的详细描述。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-02-17
  • 2010-12-10
  • 2011-09-20
  • 2013-03-25
  • 2023-03-08
  • 2016-07-17
  • 2015-07-17
  • 2014-07-11
相关资源
最近更新 更多