2015-11-19 75 views
0

我已經閱讀了兩個.csv文件並做了一些編輯。R中的Sapply函數

a1<-read.csv("2013.csv",header=T, na.strings = c("NULL","PrivacySuppressed")) 

a2<-a1[,441,drop=F] 

a3<-a1[,-441,drop=F] 

a4<-cbind(a1,a2) 

a4<-a4[, colSums(is.na(a4)) != nrow(a4)] 

mode(a4) 

[1] "list" 

我需要的A4是一個整數,所以我用sapply

s<-sapply(a4, as.numeric) 
mode(s) 
[1] "numeric" 

然而,問題是,列名消失了。

names(s) 

NULL 

所有以前的數據都有列名。抱歉,由於有600個變量(600個不同的列名稱),因此無法在此輸入。直到a4之前,我的專欄都有了名字。應用「sapply」後,名稱將顯示「NULL」。當我輸入s時,我看到列的名稱,但它沒有將它們檢測爲列的名稱。請幫忙。

謝謝。

+0

我覺得這是一個問題的計算器更適合。 – 2015-11-19 16:47:15

+2

嘗試'colnames(s)',因爲'sapply()'返回一個矩陣。而'as.integer()'如果你想要整數。 'as.numeric()'不會強制爲整數。但可能你真正想要的是'a4 [] < - lapply(a4,as.integer)'。這將保留數據框架類,允許你使用'names(a4)' –

+0

我試過了lapply函數。小號<-lapply(A4,as.integer)。它確實返回了列名,但是它失去了昏暗(s) - > NULL。 – user3350759

回答

-2

我認爲正確的命令是:

a4 <- as.numeric(a4)