R语言线性回归报错:invalid subscript type 'closure' 求助
解决R语言lm函数报错:Error in xj[i] : invalid subscript type 'closure'
嘿,作为R语言初学者遇到这个报错很正常,我来帮你快速搞定它!
报错原因
你写的代码里,data = reg, na.omit这部分出了问题:na.omit是一个函数(在R里叫closure/闭包),你直接把它放在data参数后面,R会误以为你想用它做下标操作,自然就会抛出"无效的下标类型'closure'"的错误。正确的做法是用na.omit()去处理你的数据集reg,而不是直接把函数名丢进去。
两种正确的写法
写法一:先清理数据再跑回归
先把含缺失值的观测删掉,得到干净的数据集,再传入lm():
# 第一步:清理数据中的缺失值 reg_clean <- na.omit(reg) # 第二步:运行线性回归 REG1 <- lm(flowpercent~ret+tna+fundage+number_shr_cl, data = reg_clean)
写法二:直接在data参数中处理数据
如果你不想额外创建新数据集,可以直接在data参数里调用na.omit()处理原始数据:
REG1 <- lm(flowpercent~ret+tna+fundage+number_shr_cl, data = na.omit(reg))
小补充
如果后续你需要对回归结果做预测等操作,想保留原始观测的数量(缺失值位置用NA填充),可以把na.omit()换成na.exclude(),用法是完全一样的哦。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

