2011-10-26 34 views
15

Tôi mới bắt đầu tìm hiểu Xác suất, và tôi đang tìm kiếm các công cụ để làm việc với trên linux.Cách tính kết hợp và hoán vị trong R?

Tôi đã tìm thấy một số kết hợp gói http://rss.acs.unt.edu/Rdoc/library/Combinations/html/00Index.html nhưng khi tôi đã cố gắng để cài đặt chúng, quá trình này failled với thông báo sau:

> install.packages("Combinations") 
Installing package(s) into ‘/home/maxim/R/x86_64-pc-linux-gnu-library/2.13’ 
(as ‘lib’ is unspecified) 
Warning message: 
In getDependencies(pkgs, dependencies, available, lib) : 
    package ‘Combinations’ is not available (for R version 2.13.1) 

Trả lời

24

Bạn có thể sử dụng gói combinat với R 2.13:

install.packages("combinat") 
require(combinat) 
permn(3) 
combn(3, 2) 

Nếu bạn muốn biết số lượng kết hợp/hoán vị, sau đó kiểm tra kích thước của kết quả, ví dụ:

length(permn(3)) 
dim(combn(3,2))[2] 
+0

Có điều gì đó có thể chỉ cho tôi một số kết hợp có thể, thay vì sau đó in tất cả? –

+10

@MaximVeksler Hãy xem 'chọn'. ('chọn (5, 2) == ncol (combn (5, 2))') – chl

+0

Trang này có thể được sử dụng thay thế: http://www.englishact.com/Permutation/index.php –

1

Nó có thể là gói "kết hợp" không được cập nhật nữa và làm không hoạt động với phiên bản mới nhất của R (Tôi cũng không thể cài đặt nó trên R 2.13.1 trên cửa sổ). Gói "combinat" cài đặt mà không có vấn đề gì đối với tôi và có thể là giải pháp cho bạn tùy thuộc vào chính xác bạn đang cố gắng làm gì.

3

Gói Combinations không phải là một phần của gói CRAN tiêu chuẩn của gói, mà là một phần của kho lưu trữ khác, omegahat. Để cài đặt nó, bạn cần phải sử dụng

install.packages("Combinations", repos = "http://www.omegahat.org/R") 

Xem tài liệu tại http://www.omegahat.org/Combinations/

+0

Điều này cũng không hoạt động, tôi nghĩ rằng phiên bản R tôi đang sử dụng là (2.13) là không tương thích –

+0

Ah, có một lỗi đánh máy; nó nên là omegahat, không phải là omega. Tôi đã sao chép và dán lệnh, nhưng tôi nên thử nghiệm nó trước. Tôi đã cập nhật câu trả lời của mình. Mã cập nhật này hoạt động với tôi trong 2.13.2 trên Windows. –

13

Hàm combn nằm trong gói utils tiêu chuẩn (tức là đã được cài đặt)

choose cũng đã có sẵn trong Special {cơ sở}

+2

wow rất nhiều rắc rối cho một câu hỏi đơn giản là câu trả lời của nó là 3 từ "hàm chọn" – bubakazouba

27

Nếu bạn không muốn mã của bạn phụ thuộc vào các gói khác, bạn có thể luôn luôn chỉ cần viết các chức năng:

perm = function(n, x) { 
    factorial(n)/factorial(n-x) 
} 

comb = function(n, x) { 
    factorial(n)/factorial(n-x)/factorial(x) 
} 
+4

Đó là một ý tưởng tồi về số lượng. R có thể đánh giá 'chọn (500, 2)' nhưng không phải 'giai thừa (500) '. Bạn ít nhất nên làm việc với 'lfactorial' và sau đó lấy' exp() '. Lý do duy nhất tôi đăng bài này là câu trả lời của bạn có rất nhiều upvotes, có vẻ như mọi người không biết những điều này ... –

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