You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何R语言显示因子水平为"0""1",却输出1、2并以此绘图?

R中0/1数据转因子的异常问题

我仅使用as.factor()和factor()对包含0、1的数据进行因子转换,二者效果一致,但出现了矛盾的现象:

执行以下代码:

data$Class <- as.factor(as.numeric(data$Class))
str(data$Class)
data$Class

得到的输出:

Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 2 2 2 ...
   [1] 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0

从输出看存在矛盾,我初步认为这是个bug。之后我尝试了两种解决方法:

  • 新建变量重新处理:

    data$Class2 <- ifelse(data$Class == '1', 1, 0)
    data$Class2 <- factor(data$Class2)
    data$Class2
    
  • 强制指定factor()的levels和labels参数:

    factor(data$Class, levels = c("0","1"), labels = c("0","1"))
    

但所有操作得到的结果完全一致,而且绘图时Class的显示值是1、2(见附图)。


内容的提问来源于stack exchange,提问作者ackf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:49:54