我有一组矢量和矩阵,它们可以分为5个子组。由于我想更容易和整齐地管理这些向量和矩阵,我可以将几个向量或几个矩阵放入一个数据帧吗?如果允许这样做,如果我将它们分组到一个数据帧中,那么内存消耗是否会更大(而不是将它们作为单独的向量和矩阵)?
感谢您的建议!
答案 0 :(得分:2)
基于我们在上面的评论中讨论的内容,这里有一个您应该能够重现的示例。 请务必先保存所有工作,因为此示例会删除当前工作区中的对象。
## 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
您可以看到尺寸差异很小,无论您是将对象收集为list
(推荐)还是data.frame
(不建议用于实际目的,{{1} } data.frame
list
class
。