构建NN模型时as.formula函数报错:attempt to set an attribute on NULL的解决
问题分析与修复方案
错误原因
as.formula()函数要求输入的字符串必须符合R语言公式的标准格式——必须包含~符号,用于分隔响应变量和自变量集合。你当前拼接的字符串只有自变量部分(label1 + label2 + ... + label9),缺少公式的核心结构(比如~前缀或完整的响应变量 ~ 自变量格式),导致函数无法生成有效的公式对象,进而触发错误。
修复方法
根据你的需求,分两种场景修复:
场景1:需要指定响应变量(比如响应变量名为target)
如果你的神经网络模型需要明确响应变量,只需在拼接的自变量字符串前添加"target ~ ",再转换为公式:
# 拼接自变量部分 labels <- paste('label', seq(1,8,1), sep='', collapse = ' + ') labels <- paste(labels, '+', 'label9') # 添加响应变量与~,转换为公式 final_formula <- as.formula(paste("target ~", labels))
场景2:仅需自变量集合(部分模型支持)
如果只需要生成包含所有label的自变量公式结构,至少要添加~前缀:
labels <- paste('label', seq(1,8,1), sep='', collapse = ' + ') labels <- paste(labels, '+', 'label9') # 添加~前缀,转换为公式 final_formula <- as.formula(paste("~", labels))
执行上述代码后,final_formula会生成你需要的公式结构:
- 场景1:
target ~ label1 + label2 + label3 + label4 + label5 + label6 + label7 + label8 + label9 - 场景2:
~ label1 + label2 + label3 + label4 + label5 + label6 + label7 + label8 + label9
内容的提问来源于stack exchange,提问作者tensai
相关产品推荐
相关产品推荐

