【问题标题】:Why does appending a character vector to a data frame turn it into a factor vector? [duplicate]为什么将字符向量附加到数据帧会将其变成因子向量? [复制]
【发布时间】:2018-11-07 08:27:37
【问题描述】:

问题:为什么将字符向量附加到数据帧(使用cbinddata.frame)会将字符向量变成因子向量?

除了cbinddata.frame 之外,有没有人知道可以让我避免这种意外和不受欢迎的行为的功能?

这是一个 MWE:

ab = data.frame(a= c("a", "a"), b= c("b", "b"))  
c = c("c", "c")  
class(c)

'字符'

abc1 = data.frame(ab, c)  
class(abc1$c)

'因素'

class(abc1$a)

'字符'

class(abc1$b)

'字符'

abc2 = cbind(ab, c)  
class(abc2$c)

'因素'

class(abc2$a)

'字符'

class(abc2$b)

'字符'

如果原始数据框的列是因子,或者在附加第三列的过程中也被转换为因子,那么这种行为对我来说会更有意义,但至少对于我的 R 版本好像不是这样的。

【问题讨论】:

  • data.frame 有一个默认的stringsAsFactors = T。尝试将此设置为 false

标签: r


【解决方案1】:

正如 cmets 中所指出的,这很容易解决。

abc = data.frame(ab, c, stringsAsFactors = FALSE)

这也是 StackOverflow 上的另一个问题,虽然我当时没有意识到。

Change stringsAsFactors settings for data.frame

【讨论】:

  • 应该注意 cbind 也有一个 stringsAsFactors 参数。在这种情况下,任何一种都可以使用,您可以根据需要选择其中一种。
猜你喜欢
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 2014-05-27
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
相关资源
最近更新 更多