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

如何基于my_diamonds将cut和color转为哑变量并生成新数据框?

解决dummyVars生成cut和color哑变量的错误问题

你遇到的问题是公式格式不正确导致的,dummyVars需要标准的R公式语法,不能把变量名用引号包裹起来。下面是修正后的完整解决方案:

正确的代码实现

# 确保cut和color是字符型(你已经完成这一步了)
my_diamonds <- diamonds %>% mutate(cut = as.character(cut), color = as.character(color), clarity = as.character(clarity))

# 生成cut和color的哑变量:使用正确的公式语法
dummy <- caret::dummyVars(~ cut + color, data = my_diamonds, fullRank = FALSE, sep = ".")

# 转换为数据框
training_data <- predict(dummy, my_diamonds) %>% as.data.frame()

错误原因解释

  • 第一种写法"cut + color":你把整个表达式当成了字符串,dummyVars会尝试直接解析这个字符串,导致它找不到名为color的对象(因为它被包裹在字符串内部,不是环境中的可识别变量)。
  • 第二种写法~ "cut + color":公式的右侧必须是变量名的组合,而不是一个完整的字符串,这种写法会被识别为无效的公式格式,所以报错invalid model formula in ExtractVars。

额外说明

如果你之后需要生成除特定变量外的所有哑变量,可以用这样的公式:~ . - clarity(表示除clarity之外的所有变量),但针对当前需求,~ cut + color就完全足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:27:36