2014-05-18 21 views
5

Từ đọc mà tôi đã làm với R, tôi có thể chọn một cột trong một khung dữ liệu theo một trong hai phương pháp sau: frame [, column] hoặc frame $ column. Tuy nhiên, khi tôi có một chuỗi như một biến, nó chỉ hoạt động trong chuỗi đầu tiên. Nói cách khác, hãy xem xét những điều sau đây:

Tôi có khung dữ liệu, tmp, một tập hợp con của khung phản hồi câu hỏi lớn hơn. V1 là id của người trả lời, Q5.3 là câu trả lời, 1 hoặc 0:

  V1 Q5.3 
2 R_bdyKkzWcvBxDFTT 1 
3 R_41wnKUQcM8mUW2x 0 
4 R_2ogeykkgbH2e4RL 1 
5 R_8D4jzMBfYO0M0ux 1 
6 R_3KPgP2pxWROnip7 1 

str(tmp) 

'data.frame': 5 obs. of 2 variables: 
    $ V1 : Factor w/ 364 levels "R_0039orNoOoWaDQx",..: 256 116 70 201 95 
    $ Q5.3: num 1 0 1 1 1 

Bây giờ, tôi xác định biến x, giữ chuỗi tên của một trong các cột.

x<-"Q5.3" 

tmp [, x] trả về những gì tôi nghĩ rằng nó sẽ trả về:

tmp[,x] 

[1] 1 0 1 1 1 

tmp $ "Q5.3" trả về những gì tôi nghĩ rằng nó sẽ trả về:

tmp$"Q5.3" 

[1] 1 0 1 1 1 

tmp $ x tuy nhiên trả về

tmp$x 

NULL 

Làm cách nào tôi có thể yêu cầu R giải nghĩa tmp $ x dưới dạng tmp $ "Q5.3".

Trả lời

14

Nếu bạn có biến số x có tên cột trong tmp, tmp[,x] hoặc tmp[[x]] là cách chính xác để trích xuất. Bạn không thể nhận được R để sử dụng điều trị tmp$xtmp$"Q5.3". tmp$x sẽ luôn tham chiếu đến mục có tên "x" trong "tmp".

+0

Rất tiếc. Cảm ơn. Tôi sẽ ngừng cố gắng, sau đó. :-) –

+0

điều này đã có được một dupe ... –

+0

@BenBolker Tôi không bao giờ có thể tìm thấy một dup tốt cho câu hỏi này mặc dù nó đi lên soooooo thường xuyên. Tôi đã nghĩ đến việc bắt đầu một. "Sự khác biệt giữa $, [] và [[]] khi làm việc với data.frames là gì?" – MrFlick

Các vấn đề liên quan