2013-06-27 44 views
0

我有一個名爲陣列稱爲namearray作爲命名數組作爲數據幀 - > col.names(DF)=名(數組)

> namearray 
evntidABCD evntidWXYZ  
     1   2 
> names(namearray) 
[1] "evntidABCD" "evntidWXYZ" 

> nrow(namearray) 
[1] 2 

從這namearray,我想建立一個數據幀namedf使得namedf的col.names應該與namearray完全相同。並且namedf的行數應該比namearray小1,因爲namearray中的第一行是列名。

我試過下面的代碼,它給了我下面的錯誤。

>namedf<-data.frame() 
>col.names(namedf)<-names(namearray) 

Error in `colnames<-`(`*tmp*`, value = c("evntidABCD", "evntidWXYZ")) : 
    'names' attribute [2] must be the same length as the vector [0] 

回答

2
> namearray 
evntidABCD evntidWXYZ  
     1   2 

這確實是不看像一個 '陣列'。或許命名爲'矢量'。

如果你創建一個沒有列的數據框,那麼沒有什麼需要命名的。這將延長一個「空數據框」

namevec <- c(evntidABCD=1, evntidWXYZ =2) 
namedf<-data.frame() 
namedf <- setNames(rbind(namedf,namevec), names(namevec)) 

(Justin的建議是更好的。)

+3

將其轉換爲'list'和使用,將工作! 'data.frame(as.list(namearray))' – Justin