我试图减少我的一些数据集的内存占用,其中每列有一小部分因子(重复很多次).有没有更好的方法来减少它?为了比较,这是我从使用因素得到的:
library(pryr)
N <- 10 * 8
M <- 10
Run Code Online (Sandbox Code Playgroud)
初步数据:
test <- data.frame(A = c(rep(strrep("A", M), N), rep(strrep("B", N), N)))
object_size(test)
# 1.95 kB
Run Code Online (Sandbox Code Playgroud)
使用因素:
test2 <- as.factor(test$A)
object_size(test2)
# 1.33 kB
Run Code Online (Sandbox Code Playgroud)
旁白:我天真地认为他们用一个数字取代了弦乐,并且看到test2小于的数字令人惊喜test3.谁能指点我如何优化因子表示?
test3 <- data.frame(A = c(rep("1", N), rep("2", N)))
object_size(test3)
# 1.82 kB
Run Code Online (Sandbox Code Playgroud) 这可能是愚蠢和基本的,但我如何获得列表 edcba
当我尝试:
import string
letters = string.ascii_lowercase
letters[4:0:-1]
Run Code Online (Sandbox Code Playgroud)
'EDCB'
这是有道理的,因为索引是[4,3,2,1].但是,使用-1以下结果:
letters[4:-1:-1]
Run Code Online (Sandbox Code Playgroud)
""
我知道我可以做"".join(reversed(letters[:5]))或使用列表理解,但我很好奇如何用消极的步骤做到这一点.