首页 > 解决方案 > 为什么将字符向量附加到数据帧会将其变成因子向量?

问题描述

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

有谁知道除此之外的功能,cbind或者data.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 版本似乎没有是这样的。

标签: r

解决方案


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

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

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

更改 data.frame 的 stringsAsFactors 设置


推荐阅读