0

我想计算数据框中每一列的基尼系数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 包需要一个向量,而矩阵不是一个向量。

我的问题是:

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

谢谢

聂里达

4

1 回答 1

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') )

应该产生相同的结果。

于 2013-06-03T11:47:27.837 回答