更改stringsAsFactors data.frame的设置

Vin*_*ntH 27 default r options dataframe r-factor

我有一个函数,我在其中定义一个data.frame我使用循环来填充数据.在某些时候,我收到警告消息:

警告消息:1:In [<-.factor(*tmp*,iseq,value ="CHANGE"):生成的因子级别无效

因此,当我定义我的data.frame时,我想将选项设置stringsAsFactorsFALSE但我不明白该怎么做.

我试过了:

DataFrame = data.frame(stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

并且:

options(stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

设置stringsAsFactors选项的正确方法是什么?

MvG*_*MvG 38

这取决于您填写数据框的方式,您没有提供任何代码.构造新数据框时,可以这样做:

x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果例如aVector是字符向量,则数据帧列x$aName也将是字符向量,而不是因子向量.组合,与现有的数据帧(用rbind,cbind或类似的)应保持该模式.

当你执行

options(stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)

您更改全局默认设置.因此,在执行该行之后创建的每个数据框都不会自动转换为因子,除非明确告知这样做.如果您只需要在一个地方避免转换,那么我宁愿不更改默认值.但是,如果这会影响代码中的许多位置,则更改默认值似乎是一个好主意.

还有一件事:如果你的向量已经包含因子,那么上述两个都不会将它改回一个字符向量.为此,您应该使用as.character或类似地显式转换回来.