R中的下标超出范围错误

用户名

同时使用统计数据包中的factanal函数进行因子分析。

我尝试了以下操作。

library(mirt)
library(ltm)
library(psych)
library(stats)
data(SAT12)
data=SAT12
cor_mat=polychoric(data,  ML=TRUE, global=F)
 fit <- factanal(factors=2, n.obs=nrow(data), covmat=cor_mat$rho)


Divide_item_Factor_Loading(fit)

当我尝试运行Divide_item_Factor_Loading(fit)时,出现一个错误

   Error in a[[i]][[2]] : subscript out of bounds 

弹出。

我完整的Divide_item_Factor_Loading代码:

Divide_item_Factor_Loading=function(fit)
{
  a=list()
  items=NULL
  for(i in 1:nrow(fit$loadings)) ######corresponding to rows of loading matrix
  {
    k=which(fit$loadings[i,]==max(abs(fit$loadings[i,])))  
    a[[i]]=c(i,as.numeric(k))
  } 
  fact_item_mat=matrix(, nrow=nrow(fit$loadings), ncol=ncol(fit$loadings))
  for(j in 1:(ncol(fit$loadings)))
  {
    for(i in 1:(nrow(fit$loadings)))
    {
      if(a[[i]][[2]]==j) {fact_item_mat[i,j]=a[[i]][[1]]}
    }    
  }
  nam=names(fit$loadings[,1])
  factor=list()
  for(i in 1:ncol(fit$loadings))
  {
    factor[[i]]=sort(fact_item_mat[,i], decreasing = FALSE, na.last = NA)
    fac=factor[[i]]
    fac=nam[fac]
    factor[[i]]=fac
  }
  names(factor)=paste("factor", 1:ncol(fit$loadings), sep="")
  return(factor)
}

我现在应该采取什么步骤来避免此错误?

ath

运行代码并调试函数(使用debug函数),我可以看到为什么出现“下标越界”错误:

  • 变量的第15个元素(以及其他元素)的a长度为1,因此R在尝试达到a[[15]][2]...时不满意...
  • 之所以说这个元素只有长度1而不是2的原因是因为对于负值达到了factor的最大绝对值,并且您要问哪个值(不是绝对的)等于这个最大绝对值,所以答案是没有...

因此,您需要将行更改
which(fit$loadings[i,]==max(abs(fit$loadings[i,])))which(abs(fit$loadings[i,])==max(abs(fit$loadings[i,])))
,您将获得:

Divide_item_Factor_Loading(fit)
#$factor1
 #[1] "Item.1"  "Item.4"  "Item.6"  "Item.7"  "Item.8"  "Item.9"  "Item.10" "Item.11" "Item.13" "Item.14" "Item.15"
#[12] "Item.17" "Item.19" "Item.20" "Item.24" "Item.26" "Item.27" "Item.28" "Item.29"

#$factor2
 #[1] "Item.2"  "Item.3"  "Item.5"  "Item.12" "Item.16" "Item.18" "Item.21" "Item.22" "Item.23" "Item.25" "Item.30"
#[12] "Item.31" "Item.32"

即使调试功能现在可以使用,我认为您也应该更改它,因为它比应该的要复杂。

我对替代功能的主张:

Divide_item_Factor_Loading_v2<-function(fit){
     a<-apply(fit$loadings,1,function(facs) which(abs(facs)==max(abs(facs))))
     return(list(factor1=names(a)[a==1],factor2=names(a)[a==2]))
}

这为您的fit对象提供了与(调试的)函数完全相同的结果:

Divide_item_Factor_Loading_v2(fit)
#$factor1
 #[1] "Item.1"  "Item.4"  "Item.6"  "Item.7"  "Item.8"  "Item.9"  "Item.10" "Item.11" "Item.13" "Item.14" "Item.15"
#[12] "Item.17" "Item.19" "Item.20" "Item.24" "Item.26" "Item.27" "Item.28" "Item.29"

#$factor2
 #[1] "Item.2"  "Item.3"  "Item.5"  "Item.12" "Item.16" "Item.18" "Item.21" "Item.22" "Item.23" "Item.25" "Item.30"
#[12] "Item.31" "Item.32"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R中的下标超出范围错误

来自分类Dev

如何克服R中的此“下标超出范围”错误?

来自分类Dev

R错误类型“下标超出范围”

来自分类Dev

R错误类型“下标超出范围”

来自分类Dev

代码中的下标超出范围错误

来自分类Dev

此Excel VBA脚本中的下标超出范围错误

来自分类Dev

数组中的VBA随机元素,下标超出范围错误

来自分类Dev

VBA中ReDim的下标超出范围(错误9)

来自分类Dev

vba中的下标超出范围(错误9)

来自分类Dev

数组中的VBA随机元素,下标超出范围错误

来自分类Dev

从“查找”结果中获取“下标超出范围”错误

来自分类Dev

如何处理函数中的“下标超出范围”错误?在R中

来自分类Dev

在Shiny中出现错误“下标超出范围”,但在R中却没有?

来自分类Dev

在Shiny中出现错误“下标超出范围”,但在R中却没有?

来自分类Dev

PostgreSQL:错误:数组下标超出范围

来自分类Dev

错误:下标超出范围(骑士之旅)

来自分类Dev

子例程的下标超出范围错误

来自分类Dev

错误9:下标超出范围

来自分类Dev

For循环错误-下标超出范围

来自分类Dev

(下标超出范围)错误9

来自分类Dev

下标超出范围(错误9)

来自分类Dev

C ++向量下标超出范围错误

来自分类Dev

VBA/Excel:“下标超出范围”错误

来自分类Dev

错误[[<-`(`* tmp *`,,下标超出范围下标超出范围

来自分类Dev

在进行二进制分类时,如何解决predict()中的错误:R中的下标超出范围?

来自分类Dev

指定数组循环范围的下标超出范围错误

来自分类Dev

下标超出范围错误,错误弹出框中未显示调试按钮

来自分类Dev

PlotOnStaticMap错误:points $ Tile [,“ X”]中的错误:下标超出范围

来自分类Dev

下标超出范围,VBA

Related 相关文章

  1. 1

    R中的下标超出范围错误

  2. 2

    如何克服R中的此“下标超出范围”错误?

  3. 3

    R错误类型“下标超出范围”

  4. 4

    R错误类型“下标超出范围”

  5. 5

    代码中的下标超出范围错误

  6. 6

    此Excel VBA脚本中的下标超出范围错误

  7. 7

    数组中的VBA随机元素,下标超出范围错误

  8. 8

    VBA中ReDim的下标超出范围(错误9)

  9. 9

    vba中的下标超出范围(错误9)

  10. 10

    数组中的VBA随机元素,下标超出范围错误

  11. 11

    从“查找”结果中获取“下标超出范围”错误

  12. 12

    如何处理函数中的“下标超出范围”错误?在R中

  13. 13

    在Shiny中出现错误“下标超出范围”,但在R中却没有?

  14. 14

    在Shiny中出现错误“下标超出范围”,但在R中却没有?

  15. 15

    PostgreSQL:错误:数组下标超出范围

  16. 16

    错误:下标超出范围(骑士之旅)

  17. 17

    子例程的下标超出范围错误

  18. 18

    错误9:下标超出范围

  19. 19

    For循环错误-下标超出范围

  20. 20

    (下标超出范围)错误9

  21. 21

    下标超出范围(错误9)

  22. 22

    C ++向量下标超出范围错误

  23. 23

    VBA/Excel:“下标超出范围”错误

  24. 24

    错误[[<-`(`* tmp *`,,下标超出范围下标超出范围

  25. 25

    在进行二进制分类时,如何解决predict()中的错误:R中的下标超出范围?

  26. 26

    指定数组循环范围的下标超出范围错误

  27. 27

    下标超出范围错误,错误弹出框中未显示调试按钮

  28. 28

    PlotOnStaticMap错误:points $ Tile [,“ X”]中的错误:下标超出范围

  29. 29

    下标超出范围,VBA

热门标签

归档