【发布时间】:2012-02-20 00:45:31
【问题描述】:
Stata 有一个名为compress 的命令,它查看所有数据行并尝试将每个行强制转换为最有效的格式。例如,如果你有一堆整数作为字符向量存储在 data.frame 中,它会将其强制转换为整数。
我可以想象如何在 R 中编写这样一个函数,但它已经存在了吗?
【问题讨论】:
-
如果某些指定的值的一部分不是 NA,编写测试整数和强制的代码会很容易,但我认为一般答案是“否”。
-
这也是我的想法。诀窍是编写高效的代码,这样它就不会永远运行。正则表达式是显而易见的开始方式,但可能太慢了。
-
如果您要使用 length(levels(factor())) 进行测试并转换为因子,如果该值小于向量的 hte 长度的 20%,您还可以节省空间。同样,您可以检查向量 vrc 的哪一部分具有值 == trunc(vec) 这可能是测试将数字强制转换为整数是否明智。我自己并没有看到太多正则表达式方法的适用性,但也许我又迟钝了。
-
@DWin 因子的空间效率始终低于 32 位平台上的字符串。它们在 64 位平台上效率更高,级别比率更小(由于
sizeof(SEXP) == 2 * sizeof(int)),因此规则会因平台而异......(如果你想学究;)) -
stata 的“压缩”不会将字符数据类型转换为数字数据类型。它只会优化字符和数字数据类型的存储。可以说,数字不超过 10 的变量将从浮点数或双精度数转换为“字节”数据类型(R 不支持的非常方便的格式)。但是1到10个数字的字符变量不会转成数字
标签: r