【问题标题】:object of type 'closure' is not subsettable“闭包”类型的对象不可子集
【发布时间】:2020-10-24 08:18:03
【问题描述】:

我正在尝试编译正在运行但未编译的代码。

错误消息:从第 40-42 行退出 (midterm.Rmd) data$Y_i1 中的错误:“闭包”类型的对象不是子集 调用: ... withCallingHandlers -> withVisible -> eval -> eval -> mean 执行停止

代码

c) 使用来自问题集 1 的数据集“potential_outcomes.Rda”(在 bCourses 上也加载了此考试),使用 R 计算 ATE 和 SE($\hat{ATE}$)。对于后者,假设在实验中将一半的单位分配给治疗组。ATE是参数还是估计量?SE($\hat{ATE}$)怎么样?

ATE <- mean(data$Y_i1) - mean(data$Y_i0)
ATE ## Average Treatment Effect
N1 <- length(data$Y_i1)
N0 <- length(data$Y_i0)
N <- 23 # Half of observations
var1 <- var(data$Y_i1)
var0 <- var(data$Y_i0)
var1N <- var1/N
var0N <- var0/N
SEATE <- sqrt(var1N + var0N)
SEATE ## The Standard Error of the ATE

ATE 是一个参数,因为它描述了框。不需要估计。另一方面,ATE 的 SE 近似于均值差异的真实标准误差。

【问题讨论】:

  • 您可以发布示例数据吗?请使用dput(data) 的输出编辑问题。或者,如果 dput(head(data, 20)) 的输出太大。

标签: r


【解决方案1】:

object of type 'closure' is not subsettable 表示您正在尝试对函数进行子集化。如果不设置data,则会引用utils包中的data函数。

is.function(data)
#> [1] TRUE

因此,如果我们尝试使用 $ 运算符,则会出现错误。

data$Species
#> Error in data$Species : object of type 'closure' is not subsettable

但是,如果将data 设置为数据框,它就可以工作。

data <- iris

data$Species
#>  [1] setosa     setosa    
#>  [3] setosa     setosa  
#>  ...

【讨论】:

  • 由于某种原因,即使我将数据重命名为其他名称,它仍然会给我这个错误。例如,我将其重命名为 sab。 sab$y_i0 仍然给我错误。
猜你喜欢
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
相关资源
最近更新 更多