【问题标题】:Extraction of specific result in R outputs在 R 输出中提取特定结果
【发布时间】:2021-02-17 01:28:59
【问题描述】:

我想从 mardia 的命令中提取“b1p”和“b2p”的值,并希望将其保存在 bskew 中。 为此,我使用了“psych”包 R 版本是 4.0.3。我尝试了几个提取命令,但都失败了。

bskew <- mardia$b1p
bskew <- mardia[b1p
bskew <- mardia[[b1p

为此,我收到错误“'closure' 类型的对象不是子集” 通过使用names(),我只得到了名字,通过使用class(),我得到了“psych”、“mardia”。 通过使用summary(),我收到消息“警告消息: 在summary.psych(mardia(x)): 对不起,我没有这个对象的汇总函数”然后我使用了mna$coefficients[[]] 命令 我收到消息“NULL”。 我在 mna 中保存了我的 mardia 命令。 最低工作示例是:

n0 <- 5
 p0 <- 2
 m0 <- matrix(rep(0,p0),ncol=p0)
 s0 <- diag(1,p0) 
 x <- rmvnorm(5,mean=m0, sigma=s0)
 mardia$"b1p"
 bskew <- mardia["b1p"]
 bskew <- mardia[["b1p"]]
 bkurt <- mardia[["b2p"]]
 bskew <- mardia$b1p$
 mna<-mardia(x)
 class(mna)
 names(mna)
 summary(mardia(x))
 summary(mna)
 sk1 <- mna$coefficients[[3]]
  mna$coefficients

【问题讨论】:

  • mna$b1p 工作
  • @AndreasM 是的,OP 在函数上调用子集函数,而不是在返回的对象上调用它们,OP 直到运行子集线才创建。

标签: r psych


【解决方案1】:

错误是因为您试图对函数 mardia 进行子集化,该函数总是会引发您遇到的错误,而且您应该对 mna 对象进行子集化,而不是对实际函数进行子集化。

> mna$b1p
[1] 1.95888
> mna["b1p"]
$b1p
[1] 1.95888

> mna[["b1p"]]
[1] 1.95888
> mardia(x)$b1p
[1] 1.95888
> mardia$b1p
Error in mardia$b1p : object of type 'closure' is not subsettable
> mardia<-mardia(x)
> mardia$b1p
[1] 1.95888

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2019-06-17
    相关资源
    最近更新 更多