2012-06-19 22 views
8

Làm cách nào tôi có thể tạo ra một chuỗi các số đang trong tiến trình hình học trong R? ví dụ tôi cần tạo chuỗi: 1, 2,4,8,16,32 và cứ thế ... cho đến khi nói một giá trị hữu hạn?Các số trong tiến trình hình học

+9

'2^seq (0, 5, bởi = 1) ' – baptiste

Trả lời

6

Đây là những gì tôi muốn làm:

geomSeries <- function(base, max) { 
    base^(0:floor(log(max, base))) 
} 

geomSeries(base=2, max=2000) 
# [1] 1 2 4 8 16 32 64 128 256 512 1024 

geomSeries(3, 100) 
# [1] 1 3 9 27 81 
+0

cảm ơn bạn, u có thể vui lòng xem bình luận của tôi ở trên và cho tôi biết nếu tôi có thể viết mã này trong thời trang đó? Tôi là một newbie và do đó có rất nhiều nghi ngờ: ( – Maddy

+0

mục tiêu cuối cùng của bạn là gì? Bạn đang viết một kịch bản để làm một cái gì đó trong R và nếu như vậy, bạn đang cố gắng làm gì với nó? Nếu bạn mới đến R, một nghiên cứu nhỏ sẽ giúp ích rất nhiều trong trung hạn Câu hỏi này có rất nhiều tài nguyên: http://stackoverflow.com/questions/192369/books-for-learning-the-r-language – SlowLearner

+0

@Maddy - Câu trả lời của Josh là những gì bạn muốn tôi nghĩ. 'geomSeries (2,32)' như được nêu trong câu trả lời của anh ta sẽ cho bạn tiến triển cơ sở 2 cho đến khi giá trị tối đa là 32. – thelatemail

4

Tại sao không chỉ nhập 2^(0: n)? Ví dụ. 2^(0: 5) giúp bạn từ 1 đến 32 và cứ tiếp tục như vậy. Chụp vector bằng cách gán cho một biến như sau: x <-2^(0: 5)

+0

khi tôi muốn có một chuỗi từ nói 1 đến 100, incrementing 10, tôi viết: seq (1, 100, bởi = 10). vì vậy bây giờ tôi muốn một chuỗi từ 1 đến 1000 nói rằng gia tăng hình học như 1, sau đó 2, sau đó 4 và như vậy. – Maddy

+0

Một cái gì đó như thế này để có được một tiến triển hình học luôn luôn kết thúc ít hơn số lượng quy định (1000 trong trường hợp này): '2^(1: sàn (log (1000,2)))' – thelatemail

+2

Đề nghị bạn có một cái nhìn tại ' seq() ', theo nhận xét của baptiste ở trên. Làm '?' Và tên hàm để nhận trợ giúp về hàm R, do đó, '? Seq'. Trong trường hợp này, bạn muốn một cái gì đó như 'seq (0, 10, by = 10)'. Lưu ý rằng đi từ 0 đến 100, không phải từ 1 đến 100, không phải là một chuỗi khoảng cách đều đặn. – SlowLearner

3

Bạn có thể tìm bất kỳ điều khoản trong một chuỗi hình học với chức năng toán học này:

term = bắt đầu * tỷ lệ ** (n-1)

Trong đó: 012.
thời hạn = cụm từ theo thứ tự mà bạn muốn
bắt đầu = cụm từ đầu tiên trong chuỗi
ratio = tỷ lệ chung (tức là bội số xác định trình tự)
n = số cụm từ theo thứ tự mà bạn muốn

Sử dụng thông tin này, viết hàm trong R cung cấp bất kỳ tập hợp con nào của chuỗi hình học cho bất kỳ bắt đầu và tỷ lệ nào:

#begin = beginning of subset 
#end = end of subset 

geomSeq <- function(start,ratio,begin,end){ 
    begin=begin-1 
    end=end-1 
    start*ratio**(begin:end) 
} 

geomSeq(1, 2, 1, 10) 
# [1] 1 2 4 8 16 32 64 128 256 512 

geomSeq(10,3,1,8) 
# [1] 10 30 90 270 810 2430 7290 21870 

geomSeq(10,3,4,8) 
# [1] 270 810 2430 7290 21870 

More on geometric sequences

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