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

R语言计算倾向得分代码报错:找不到指定匿名函数

R计算倾向得分报错"could not find function..."问题解决

问题重现

用户运行以下代码计算倾向得分时出现错误:

执行代码

# 添加包与特征
install.packages('MatchIt')
library(MatchIt)
ldata <- MatchIt::lalonde
ldata$hispan <- ifelse(ldata$race=='hispan',1,0)
ldata$white <- ifelse(ldata$race='white',1,0)

# 计算倾向得分的模型
propscores <- fitted.values(glm(treat~age+educ+white+hispan+married+nodegree+re74+re75,
                                family=binomial, data=ldata))

返回错误

Error in `function (object, ...) 
object`(list(treat = c(1L, 1L, 1L,  : 
  could not find function "function (object, ...) 
object"

用户反馈该代码在教授环境可正常运行,自身环境报错,已尝试加载glmnet包仍未解决。

错误原因

  1. 语法错误:创建white变量时误用赋值符号=代替比较符号==,这会直接修改ldata$race的原始值,导致数据逻辑混乱,触发后续异常。
  2. 函数被覆盖:R环境中的fitted.values函数被意外替换成了一个无效的匿名函数,导致无法正常提取GLM模型的拟合值。

解决办法

1. 修复语法错误

将创建white变量的代码中的=改为==:

ldata$white <- ifelse(ldata$race=='white',1,0)

2. 恢复原始fitted.values函数

如果是函数被覆盖,运行以下代码移除无效定义,恢复基础包的原始函数:

rm(fitted.values)

或者直接调用stats包的原始函数,避免环境干扰:

propscores <- stats::fitted.values(glm(treat~age+educ+white+hispan+married+nodegree+re74+re75,
                                        family=binomial, data=ldata))

3. 替代方案:使用fitted()函数

fitted()是fitted.values()的官方别名,兼容性更好,可直接替换使用:

propscores <- fitted(glm(treat~age+educ+white+hispan+married+nodegree+re74+re75,
                          family=binomial, data=ldata))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:25:26