R 4.0.0和其他因素

R 4.0.0和其他因素,r,R,我正在维护一个基于R的应用程序,它使用read.table()、各种data.frame()和lm()/glm()类型的函数。从版本4.0.0开始,默认情况下,R将数据帧中的字符串视为字符串而不是因子。我正在考虑如何处理这个问题,以避免出现问题 我在谷歌上搜索了可能会受到更改影响的函数的信息,但没有找到明确的列表,也没有找到可能扫描包以查找潜在问题的实用程序。我错过了任何可能有用的东西吗 另一方面,我发现了这篇文章 库尔特·霍尼克:关键因素 其中包括: 因此,在2019年图卢兹的R核心会议上,

我正在维护一个基于R的应用程序,它使用read.table()、各种data.frame()和lm()/glm()类型的函数。从版本4.0.0开始,默认情况下,R将数据帧中的字符串视为字符串而不是因子。我正在考虑如何处理这个问题,以避免出现问题

我在谷歌上搜索了可能会受到更改影响的函数的信息,但没有找到明确的列表,也没有找到可能扫描包以查找潜在问题的实用程序。我错过了任何可能有用的东西吗

另一方面,我发现了这篇文章

库尔特·霍尼克:关键因素

其中包括:

因此,在2019年图卢兹的R核心会议上,决定默认使用stringsAsFactors=FALSE,最好从4.0.0版本开始

最终,stringsAsFactors选项将因此消失。目前,实际上可以通过内部环境变量\u R\u OPTIONS\u STRINGS\u AS\u FACTORS\u一致地设置选项(因此stringsAsFactors默认值):基本和推荐的软件包去年已经修改过,无论默认设置如何,都能正常工作,一些常规的CRAN检查将很快切换到使用_R_选项_字符串_作为_因子_=false

如果我理解正确,stringsAsFactors将不再是data.frame()和read.table()中的参数。听起来我们现在可以将带有由字符串表示的分类变量的数据帧传递给lm()、glm()等,这样的函数会自动正确处理它们。所以我可以从函数调用中删除所有stringsAsFactors参数,所有这些函数都能正常工作?是这样吗?(这似乎太容易了。)

我很感激你的建议。
谢谢。

stringsAsFactors
仍然是data.frame中的一个参数,但是默认值(
default.stringsAsFactors()
)现在是
FALSE
,而不是以前的
TRUE
。因此
data.frame(a=字母[1:5])
a
作为R4.0.0中的字符。如果您想将它们作为因子,您需要明确地提到它
data.frame(a=letters[1:5],stringsAsFactors=TRUE)
“听起来我们现在可以将带有由字符串表示的分类变量的数据帧传递给
lm()
glm()
,等等,这些函数将自动正确处理它们”。这取决于功能
lm
glm
至少在10年内自动将字符串转换为因子,因此没有任何更改。(这同样适用于任何依赖于
model.matrix
的建模函数。)我想冒昧地说,大多数需要因子的标准函数(我所说的“标准”是指
base
函数或流行的、支持良好的包中的函数)要么(a)自动将字符串转换为因子,要么(b)如果给他们一个字符串,则抛出一个错误。在案例(a)中,一切都应该是一样的。在案例(b)中,您应该得到一条错误消息,并且能够添加一个
因子()
转换来修复它。