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

R语言中两个numeric变量相减返回NA的问题求助

问题原因
  • 核心问题是代码存在数据框名称不一致的笔误:你新增的ControlPermute列是存储在households数据框中的,但计算null_avg_control时,筛选条件误写为df$treatment=='Control',df数据框内不存在ControlPermute列,取子集后得到的是空向量或全NA向量,求均值后自然返回NA。
  • 你可以单独运行head(households$ControlPermute[df$treatment=='Control'])验证,输出结果会显示全为NA值。
解决方法
  • 把计算null_avg_control那一行的df改为households即可,修正后的完整代码如下:
set.seed(10003)
Niter <- 5
null_diff <- vector(length=Niter)
for (i in 1:Niter){
    households$ControlPermute <- sample(households$voted[households$treatment=='Control'], size=180002, replace=T)
    
    null_avg_treated <- mean(households$ControlPermute[households$treatment=='Neighbors'])
    # 修正此处的数据框名称
    null_avg_control <- mean(households$ControlPermute[households$treatment=='Control'])
    null_diff[i] <- null_avg_treated - null_avg_control

    print(null_avg_treated)
    print(null_avg_control)
    print(null_diff[i])
}
  • 如果你确实需要使用df数据框完成计算,需要先将ControlPermute列同步到df中,再进行均值计算,避免取值错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:18:03