问题:为什么将字符向量附加到数据框(使用
cbind
或data.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版本是似乎并非如此。
答案 0 :(得分:2)
正如评论中指出的那样,这很容易解决。
abc = data.frame(ab,c,stringsAsFactors = FALSE)
这也是StackOverflow的另一个问题,虽然我当时没有意识到这一点。