我有一组向量和矩阵,它们可以分为 5 个子组。由于我想更轻松、更整洁地管理这些向量和矩阵,我可以将多个向量或多个矩阵放入一个数据帧中吗?如果允许这样做,如果我将它们分组到一个数据帧中,内存消耗是否会更大(比将它们保留为单独的向量和矩阵)?
感谢您的意见!
我有一组向量和矩阵,它们可以分为 5 个子组。由于我想更轻松、更整洁地管理这些向量和矩阵,我可以将多个向量或多个矩阵放入一个数据帧中吗?如果允许这样做,如果我将它们分组到一个数据帧中,内存消耗是否会更大(比将它们保留为单独的向量和矩阵)?
感谢您的意见!
基于我们在上面的评论中讨论的内容,这里有一个你应该能够重现的例子。请务必先保存所有工作,因为此示例会删除当前工作区中的对象。
## SAVE ANY WORK YOU NEED TO BEFORE DOING THIS!
##
## Start with a clean workspace
##
rm(list=ls())
ls()
set.seed(1)
## Make up some data
A = rnorm(10000)
B = sample(letters, 10000, replace=TRUE)
C = matrix(50000, nrow=10000, ncol=5)
## The same data as a data.frame
temp.df = data.frame(A = A)
temp.df$B = B
temp.df$C = C
## The same data as a list
temp.list = list(A, B, C)
##
## How big is each object?
##
sort( sapply(ls(), function(x) { object.size(get(x)) }) )
# A B C temp.list temp.df
# 80040 81288 400200 561600 562304
sum(sort( sapply(ls(), function(x) { object.size(get(x)) }) )[1:3])
# [1] 561528
您可以看到大小差异是微不足道的,无论您是将对象收集为 a list
(推荐)还是 a data.frame
(出于实际目的不推荐,尽管 adata.frame
是alist
和 a class
of data.frame
。