xml_ns.xml_documentx中的错误:外部指针无效

问题描述

我创建了一个函数来计算不同省份的卡瓦尼指数。以前效果很好。

Kakwain index

首先,我们计算第i个人与其他收入高于第i个人的收入之和。然后除以所有收入的总和。现在,我认为每个省都可以算出Kakwain。

kk.index <- function(data,x,p) {
  
  # x is index of  income,p is index of province. The codes sort provinces firstly,and in every province to calculate Kakwani index.

  # sort provinces,and sort income in every province
  data <- data[order(data[,p],data[x]),]      .
  
  # calculate the index of the range of every province.
  Fre  <- data.frame(table(data[,p]))$Freq  
  fl   <- length(Fre) 
  fre  <- c()
  fre[1] <- 0

  for (i in 2 : (fl + 1)) {
    fre[i] <- sum(Fre[1 : i - 1])
  }   
     
  for (k in 1 : fl) {
    a[k] <- sum(data[,x][(fre[k] + 1) : fre[k + 1]])
    for (i in  (fre[k] + 1) : fre[k + 1]) {
      if( i < fre[k + 1]){
        s[i] <- sum(data[,x][(i + 1) : fre[k + 1]]) - data[,x][i] * (fre[k + 1] - i)
        kk[i] <- s[i] / a[k]
      } else {
        kk[i] <- 0
      }
    }
  }
  data <- cbind(data,kk)
  return(data)
}

当我使用子集选择年龄小于55岁的人时。

ruagedata <- subset(ruraldata,age <= 55)

数据不包括某些省。该功能需要连续的省份值。

> table(ruagedata$prov)

  2   3   4   5   6   8   9  10  11  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28 
116  30  16 153  83  25  91 118  41  46  78  73  52 107  36  72  62  63  25  22  17  65 108   8 109 

for (i in 1 : length(ruagedata$prov)) {
  a <- ruagedata[,30][i]
  if (a <= 6) {
    a <- a - 1
  }else if (a>=8 & a <= 11) {
    a <- a - 2
  } else {
    a <- a - 3
  }
  ruagedata[,30][i] <- a
}
> table(ruagedata$prov)

  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25 
116  30  16 153  83  25  91 118  41  46  78  73  52 107  36  72  62  63  25  22  17  65 108   8 109 

我使用功能,它不起作用。

ruagedata <- kk.index(ruagedata,3,30)

Error in data.frame(...,check.names = FALSE) : 
  arguments imply differing number of rows: 1616,2496
Called from: data.frame(...,check.names = FALSE)
收捲时出错: (29)种类目前没有在'eval'里实现

Error: no more error handlers available (recursive errors?); invoking 'abort' restart
收捲时出错: INTEGER() can only be applied to a 'integer',not a 'unkNown type #29'
Error: no more error handlers available (recursive errors?); invoking 'abort' restart
browse[1]> 
Error in xml_ns.xml_document(x) : external pointer is not valid
Error in xml_ns.xml_document(x) : external pointer is not valid

代码在win10和R x64 4.0.0上运行。因为该函数在其他数据子集中工作良好,所以我认为我的算法是正确的。我不知道参数的平均值意味着行数不同:1616、2496。1616是总数。数字2496使我感到困惑。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)