一段代码:
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"
为什么 blarg$b c(1, "ZZZ", 3)?数字从何而来?
最佳答案
+1 用于使用名为 blarg 的 data.frame。
为了扩展 Ben 所说的内容,因子在内部存储为整数,因此当您执行此类操作时,R 不会以您期望的方式处理它。
看看str(blarg)
在上面的代码步骤中。
您可以使用 stringsAsFactors=FALSE
正如本建议的那样,或者利用这个因素:
ifelse(blarg$a!='bb', levels(blarg$a), 'ZZZ')
或者更好的是,如果您想替换
blarg$a
的级别是 'bb'
,您可以消除 ifelse
声明全文:levels(blarg$a)[levels(blarg$a)=='bb'] <- 'ZZZ'
关于r - R 的 ifelse 如何处理字符数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10761686/