2013-03-29 36 views
10

Có cách nào để R có biến được đánh giá là tên cột khi tạo khung dữ liệu (hoặc trong các tình huống tương tự như sử dụng cbind) không?Sử dụng giá trị biến làm tên cột trong data.frame hoặc cbind

Ví dụ

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

điều này tạo ra một khung dữ liệu với một cột tên là a hơn mycol.

Đây là ít quan trọng hơn so với trường hợp đó sẽ giúp tôi loại bỏ khá một vài dòng từ mã của tôi:

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

mã hiện tại của tôi có bị tra tấn:

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

đó là thẩm mỹ barftastic.

+1

bạn không thể làm 'colnames (d) [2] <- a' hay thậm chí là 'tên (d) [2] <- a' nhưng tôi thấy rõ ràng cựu để được an toàn hơn. –

Trả lời

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

Có phải structure(data.frame(1:10),names="mycol") về mặt thẩm mỹ có phù hợp với bạn không? :-)

+0

Tôi là một trong những người upvoters, nhưng tôi tò mò muốn xem câu trả lời của bạn và tôi có giống hệt không và thấy rằng họ đang sử dụng 'dput' và' giống hệt' làm bài kiểm tra. –

2

chỉ sử dụng các tên sau khi tạo. ví dụ

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 
Các vấn đề liên quan