在R输出中提取特定结果

问题描述

我想从mardia的命令中提取“ b1p”和“ b2p”的值,并将其保存在bskew中。 为此,我使用了“心理”软件包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”。 我将我的mardia命令保存在了mna中。 最低工作示例是:

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

解决方法

该错误是因为您试图对一个函数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