基尼系数,R中的ineq包和整数溢出

时间:2013-06-03 05:51:15

标签: r integer-overflow

我想计算2090 x 25数据框中每列的基尼系数。我正在使用ineq包中的Gini函数和以下代码:

gini <- sapply(mydata, function(x) ineq(x,type="Gini")).

这会生成看起来有效的结果,但也会显示以下警告消息:

警告讯息:

1: In n * sum(x) : NAs produced by integer overflow
2: In sum(x * 1:n) : Integer overflow - use sum(as.numeric(.))
3: In n * sum(x) : NAs produced by integer overflow

为了克服整数溢出,我将数据帧转换为矩阵(mymatrix <- as.matrix(mydf)),但结果全部为零或NA。我认为这是因为ineq包需要一个向量而矩阵不是一个向量。

我的问题是:

  • 如何将整数列转换为数字并保留矢量类?
  • 还有其他选项可以解决整数溢出问题吗?

由于

Nerida

1 个答案:

答案 0 :(得分:1)

如果没有更多信息,我猜你可能更喜欢

sapply(1:25, function(x) ineq(as.numeric(mydata[,x],type='Gini')) )

编辑:正如@James和@Roman指出的那样,sapply将依次抓取数据框的每个元素,所以

sapply(mydata,function(x) ineq(as.numeric(x),type='Gini') )

应该产生相同的结果。