R:何时使用stringAsFactors
我一直在阅读关于stringAsFactors的内容,以及尽管默认值为TRUE,但在许多情况下,对于某些命令,您必须将其设置为FALSE。据我所知:R:何时使用stringAsFactors,r,character,R,Character,我一直在阅读关于stringAsFactors的内容,以及尽管默认值为TRUE,但在许多情况下,对于某些命令,您必须将其设置为FALSE。据我所知: 因子是R存储文本的默认方式,因此,如果df的列包含文本,R将(始终?)在导入数据时将其转换为因子 如果您打算使用这个特定的文本列进行统计测试(回归等),那么这很好,因为许多统计函数(如lm()或glm())将要求您将文本变量设置为因子,以便它可以将它们视为分类数据 但是,如果您打算执行统计测试以外的操作(即操纵df、合并df等),则可能需要将st
- 因子是R存储文本的默认方式,因此,如果df的列包含文本,R将(始终?)在导入数据时将其转换为因子
- 如果您打算使用这个特定的文本列进行统计测试(回归等),那么这很好,因为许多统计函数(如lm()或glm())将要求您将文本变量设置为因子,以便它可以将它们视为分类数据
- 但是,如果您打算执行统计测试以外的操作(即操纵df、合并df等),则可能需要将stringAsFactors设置为FALSE,因为如果将文本变量设置为factors,某些函数可能会出错
我知道我的问题很模糊,但我只是想知道,在“决定”是否将参数设置为TRUE或FALSE时,人们是否会使用某种“技巧”/“规则”。谢谢您在讨论中遗漏了一个要点,在我看来,这些要点完全准确无误。创建因子的一个原因是,它们可能会大幅减少变量所需的存储空间量。考虑,例如,具有非常低基数的数据帧的列(值的唯一性)。当将此信息存储为
字符
数据时,需要任何存储来存储整个列中的每个字符串。然而,由于各种因素,存储需求大大减少。作为一个因素,R只需要存储一次实际字符串值,然后就可以使用数字级别表示所有值。而且,对于基数较低的列,与较大的列相比,实际上只需要存储少数字符串
考虑到R主要是一个内存中的工具,内存是宝贵的,这些因素代表了优化任何R脚本的好机会。纯粹从存储/内存的角度来说,将
stringsAsFactors
设置为TRUE
是有意义的。显然,如果您有API或其他需要,则需要做出决定。默认值仅在向后兼容的情况下保持不变。否则它在很多年前就已经改变了。我的建议是:将选项(stringsAsFactors=FALSE)
放在每个脚本的顶部,并在需要时显式创建因子。注意:在R的早期版本中,如果重复的比例很小,则将字符数据存储为一个因子会更节省空间。但是,相同的字符串现在共享存储,因此在大多数情况下差异很小。(整数值存储在4字节,而每一个字符串的引用需要一个4或8字节的指针)。“从<代码>帮助(“因子”)< /代码>。@罗兰,你是说这些因素现在帮助了更多,还是他们在R的早期版本中帮助了更多?文档是说现在你不需要再考虑内存了。(某些极端应用可能例外)。