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

Windows环境下R的mltools::one_hot独热编码失效如何解决

问题原因
  • 两个环境的R版本差异是核心诱因:Linux端使用的R 3.5.0属于4.0之前的旧版本,创建data.frame时字符串列默认会自动转换为因子类型;Windows端使用的R 4.1.1属于4.0之后的版本,R从4.0.0版本开始将stringsAsFactors的默认值调整为FALSE,字符串列默认保留为字符型。
  • mltools包的one_hot函数默认仅对因子类型的分类列执行独热编码,字符型列会被直接跳过保留原值,因此运行时不会抛出任何报错,也不会生成预期的独热编码衍生列。
解决方案

任选以下任意一种方式调整代码即可在Windows环境得到正常的独热编码结果:

  1. 创建数据框时手动开启字符串转因子配置,对齐R 3.x版本的默认行为
customers <- data.frame(
    id=c(10, 20, 30, 40, 50),
    gender=c('male', 'female', 'female', 'male', 'female'),
    mood=c('happy', 'sad', 'happy', 'sad','happy'),
    outcome=c(1, 1, 0, 0, 0),
    stringsAsFactors = TRUE
)
  1. 手动将需要编码的列转换为因子类型,适合仅需处理部分分类列的场景
# 声明需要做独热编码的分类列名
encode_cols <- c("gender", "mood")
customers[encode_cols] <- lapply(customers[encode_cols], as.factor)

调整完成后再运行原有one_hot(as.data.table(customers))代码,即可得到和Linux环境完全一致的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:18:01