2013-06-03 59 views
0

我想計算2090 x 25數據幀中每列的基尼係數。我使用的ineq包基尼功能,下面的代碼:基尼係數,R中的ineq包和整數溢出

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))但結果全部爲零或NAs。我認爲這是因爲ineq包需要一個向量而矩陣不是一個向量。

我的問題是:

  • 我怎麼能轉換成整數,列數字,並保留了一個向量類?
  • 是否有任何其他選項來解決整數溢出問題?

感謝

Nerida

+4

你可以做'str(mydata)'然後'dput'你的數據的一個子集來複制這個錯誤 – dickoa

+0

當你重新開始時,每一列都被轉換成一個向量。 –

回答

1

在沒有更多的信息,我的猜測是,你可能更喜歡

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

編輯:爲@詹姆斯和@Roman指出,sapply會搶數據幀的每個元素依次,所以

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

應該產生相同的結果。

+0

'sapply'提供載體 – James

+0

謝謝,這個工程。 – user2446647

+0

@ user2446647如果夠好,請檢查答案,以便將其標記爲已接受。謝謝! –