2013-03-29 27 views
10

在創建數據框(或類似情況下使用cbind)時,R中是否有方法將變量計算爲列名?在data.frame或cbind中使用變量值作爲列名

例如

a <- "mycol"; 
d <- data.frame(a=1:10) 

這產生與名爲a而非mycol一列的數據幀。

這比將幫助我從我的代碼中刪除了不少線路的情況下不太重要:

a <- "mycol"; 
d <- cbind(some.dataframe, a=some.sequence) 

我當前的代碼有折磨:

names(d)[dim(d)[2]] <- a; 

這是美學barftastic。

+1

不能這樣做'colnames(d)[2] < - 了',甚至'名(d)[2] < - 了'但我覺得明確前者更安全。 –

回答

10
> d <- setNames(data.frame(a=1:10), a) 
> d 
    mycol 
1  1 
2  2 
3  3 
4  4 
5  5 
6  6 
7  7 
8  8 
9  9 
10 10 
7

structure(data.frame(1:10),names="mycol")美觀嗎? :-)

+0

我是upvoters之一,但我很好奇,看看你和我的答案是否相同,並且看到他們正在使用'dput'和'identical'作爲測試。 –

2

只是在創建後使用colnames。 如

a <- "mycolA" 
b<- "mycolB" 
d <- data.frame(a=1:10, b=rnorm(1:10)) 
colnames(d)<-c(a,b) 
d 
mycolA  mycolB 
1 -1.5873866 
2 -0.4195322 
3 -0.9511075 
4 0.2259858 
5 -0.6619433 
6 3.4669774 
7 0.4087541 
8 -0.3891437 
9 -1.6163175 
10 0.7642909 
相關問題