更改stringsAsFactors data.frame的设置

时间:2012-07-18 09:42:00

标签: r dataframe default options r-factor

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

  

警告讯息:   1:在[<-.factor*tmp*,iseq,value =“CHANGE”)中:   无效因子水平,生成NAs

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

我试过了:

DataFrame = data.frame(stringsAsFactors=FALSE)

还有:

options(stringsAsFactors=FALSE)

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

1 个答案:

答案 0 :(得分:35)

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

x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE)

在这种情况下, if ,例如aVector是一个字符向量,然后数据帧列x$aName也将是一个字符向量,而不是因子向量。将其与现有数据框(使用rbindcbind或类似数据)相结合可以保留该模式。

执行时

options(stringsAsFactors = FALSE)

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

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