【问题标题】:Change stringsAsFactors settings for data.frame更改 data.frame 的 stringsAsFactors 设置
【发布时间】:2012-07-17 07:42:01
【问题描述】:

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

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

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

我试过了:

DataFrame = data.frame(stringsAsFactors=FALSE)

还有:

options(stringsAsFactors=FALSE)

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

【问题讨论】:

标签: r dataframe default options r-factor


【解决方案1】:

这取决于您如何填充数据框,而您没有提供任何代码。当你构建一个新的数据框时,你可以这样做:

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

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

当你执行时

options(stringsAsFactors = FALSE)

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

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

【讨论】:

  • 感谢“另一件事”,看来我的错误来自于此。
猜你喜欢
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 2013-05-25
  • 2014-01-20
  • 1970-01-01
  • 2019-12-25
相关资源
最近更新 更多