代码片段:
blarg = data.frame(a=c("aa", "bb", "dd"))
blarg$b = blarg$a
# blarg$b is now c("aa", "bb", "dd")
blarg$b = ifelse(blarg$a!="bb",blarg$a,"ZZZ")
# blarg$b is now c(1, "ZZZ", 3)
# I expected c("aa", "ZZZ", "dd")
# typeof(blarg$b) is "character"
Run Code Online (Sandbox Code Playgroud)
为什么blarg $ bc(1,"ZZZ",3)?这些数字来自哪里?
Jus*_*tin 13
使用名为blarg的data.frame的+1.
为了扩展Ben所说的,因子在内部存储为整数,所以当你做这样的事情时,R不能按照你期望的方式处理它.
请查看str(blarg)上面代码的步骤.
您既可以使用stringsAsFactors=FALSEBen建议,也可以使用该因子:
ifelse(blarg$a!='bb', levels(blarg$a), 'ZZZ')
Run Code Online (Sandbox Code Playgroud)
或者更好的是,如果你想更换的水平blarg$a是'bb',可以消除ifelse共语句:
levels(blarg$a)[levels(blarg$a)=='bb'] <- 'ZZZ'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13361 次 |
| 最近记录: |