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