2013-06-27 18 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