2011-12-11 6 views
5

Tôi đang cố gắng để viết một hàm để trích xuất các tần số của bảng này:Làm thế nào để trích xuất số lượng như là một vector từ một bảng trong R?

0 1 2 3 4 5 6 7 
30 22 9 12 2 5 1 16 

Vì vậy, tôi muốn có được c(30, 22, 9, 12, 2, 5, 1, 16).

Bảng thay đổi mỗi khi tôi chạy hàm, vì vậy tôi cần một thứ có thể trích xuất thông tin từ bảng một cách tự động, vì vậy tôi không viết hàm c() mỗi lần.

Trả lời

14

Nó thực sự không thể đơn giản hơn. Nếu bạn không thể con số này ra, bạn sẽ có nhiều của các vấn đề khác:

> set.seed(42)       ## be reproducible 
> X <- sample(1:5, 50, replace=TRUE) ## our data 
> table(X)        ## our table 
X 
1 2 3 4 5 
7 6 9 10 18 
> str(table(X))       ## look at structure of object 
'table' int [1:5(1d)] 7 6 9 10 18 
- attr(*, "dimnames")=List of 1 
    ..$ X: chr [1:5] "1" "2" "3" "4" ... 
> as.numeric(table(X))     ## and just convert to vector 
[1] 7 6 9 10 18 
> 

Và cho đầy đủ, thêm hai cách để lấy dữ liệu:

> unname(table(X))      ## jdropping names reduces to the vector 
[1] 7 6 9 10 18 
> table(X)[]       ## or simply access it 
[1] 7 6 9 10 18 
> 
+0

Vâng xin lỗi Im mới để R. ' table 'int [1 (1d)] 1 - attr (*, "dimnames") = Danh sách 1 .. $ T: chr "TRUE" Đó là cấu trúc tôi nhận được cho bảng tôi có.Im không chắc chắn lý do tại sao. – user1021000

+0

Sau đó, có thể đối tượng bạn chạy 'table()' chỉ có một giá trị. Chạy lại mã trong câu trả lời của tôi ở cuối của bạn, và cố gắng tìm ra mọi thứ. –

+0

Cảm ơn tôi đã nhận nó ngay bây giờ. Giúp tôi rất nhiều ở đây! – user1021000