我应该使用数据帧还是矩阵?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

何时使用data.frame,什么时候才能更好地使用matrix?

两者都以矩形格式保存数据,因此有时不清楚。

对于何时使用哪一种数据类型,有什么通用的经验规则吗?

提问于
用户回答回答于

如果可以期望列(变量)具有不同的类型(数字/字符/逻辑等),则使用数据帧。矩阵用于同一类型的数据。

因此,只有当数据类型相同时,选择矩阵/data.framework才会有问题。

答案取决于您将如何处理data.framework/矩阵中的数据。如果它要传递给其他函数,那么这些函数的参数的预期类型决定了选择。

此外:

矩阵具有更高的内存效率:

m = matrix(1:4, 2, 2)
d = as.data.frame(m)
object.size(m)
# 216 bytes
object.size(d)
# 792 bytes

如果经常按名称(通过紧凑的$运算符)引用其列,则数据帧更方便。

数据帧也更适合于报告(打印)表格信息,因为您可以分别对每一列应用格式设置。

用户回答回答于

> head(as.matrix(data.frame(a = factor(letters), B = factor(LETTERS))))
     a   B  
[1,] "a" "A"
[2,] "b" "B"
[3,] "c" "C"
[4,] "d" "D"
[5,] "e" "E"
[6,] "f" "F"
> head(data.matrix(data.frame(a = factor(letters), B = factor(LETTERS))))
     a B
[1,] 1 1
[2,] 2 2
[3,] 3 3
[4,] 4 4
[5,] 5 5
[6,] 6 6

扫码关注云+社区