通过在 R 中对数据帧进行子集化来缩小对象内存

Downsize the object memory by subsetting a data frame in R

所以我正在使用来自 https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe/downloads/515k-hotel-reviews-data-in-europe.zip/1 的数据库,但我不明白为什么我不能通过对数据集进行子集化来缩小对象大小

df = read.csv('Hotel_Reviews.csv')
object.size(df)

200503848 bytes

object.size(df[sample(1:nrow(df),500),])

157225848 bytes

通过取 0.1% 的数据,我只将数据缩小到 75%。我不明白为什么...

好的,在更深入地研究之后,似乎是因为我的数据框是由因子组成的,即使通过子集,它也保留了空水平

df = read.csv('Hotel_Reviews.csv',stringsAsFactors = FALSE)
object.size(df)

210584168 bytes

object.size(df[sample(1:nrow(df),500),])

394464 bytes