2013-02-03 48 views
1

我已經從previous question I asked修改下面這段代碼:數據集中導致計算錯誤的大小

Input_Data <- read.csv("http://dl.dropbox.com/u/58164604/Input_Data.csv", row.names=1, stringsAsFactors = FALSE) 

TPop<-Input_Data[1] 
TPopCount <- TPop[, 1] 
TPopSum <- sum(TPopCount) 

OACRaw<-Input_Data[,4:ncol(Input_Data)] 
OACRawCount <-ncol(OACRaw) 

OA_Percentage <- TPopCount/TPopSum * 100 
Data_Per_Row <- OACRaw/matrix(rep(TPopCount, each=OACRawCount), ncol=OACRawCount, byrow=T)*100 
Data_Index_Row <- Data_Per_Row/OA_Percentage * 100 
names(Data_Per_Row) <- names(Data_Index_Row) <- names(OACRaw) 

然而,當我嘗試並獲得它爲一個更大的數據集工作(186列和超過18萬行)它給以下錯誤:

Error in FUN(left, right) : non-numeric argument to binary operator 

然而,當相同的代碼運行一個較小的數據集(46列和180,00行)能正常工作:

Input_Data <- read.csv("http://dl.dropbox.com/u/58164604/Input_Data.csv", row.names=1, stringsAsFactors = FALSE) 

TPop<-Input_Data[1] 
TPopCount <- TPop[, 1] 
TPopSum <- sum(TPopCount) 

OACRaw<-Input_Data[,4:50] 
OACRawCount <-ncol(OACRaw) 

OA_Percentage <- TPopCount/TPopSum * 100 
Data_Per_Row <- OACRaw/matrix(rep(TPopCount, each=OACRawCount), ncol=OACRawCount, byrow=T)*100 
Data_Index_Row <- Data_Per_Row/OA_Percentage * 100 
names(Data_Per_Row) <- names(Data_Index_Row) <- names(OACRaw) 

任何人都可以解釋爲什麼這是,我怎麼能得到這個代碼工作在一個更大的數據集?謝謝

回答

1

您的OACRaw數據框中有一些奇怪的值。例如,在第184列第22行,該值是反引號字符:「`」。當你嘗試劃分它時,這是錯誤的原因。

第184列後面可能有其他僞造的值。

所以這個錯誤不是由於數據的大小,只是因爲當你只選擇第一列時,僞造值被排除。

+0

感謝您發現問題所在。不知道我是如何錯過它的。 – Chris