2013-03-24 19 views
23

Tôi có câu hỏi về việc tạo vectơ. Nếu tôi làm a <- 1:10, "a" có giá trị 1,2,3,4,5,6,7,8,9,10.Làm thế nào để bạn tạo các vectơ với các khoảng thời gian cụ thể trong R?

Câu hỏi của tôi là cách bạn tạo một vectơ có khoảng thời gian cụ thể giữa các phần tử của nó. Ví dụ: tôi muốn tạo một vectơ có giá trị từ 1 đến 100 nhưng chỉ tính trong khoảng thời gian 5 để tôi nhận được vectơ có giá trị 5,10,15,20, ..., 95,100

Tôi nghĩ rằng trong Matlab chúng ta có thể làm 1:5:100, làm thế nào để chúng ta làm điều này bằng cách sử dụng R?

Tôi có thể thử thực hiện 5*(1:20) nhưng có cách nào ngắn hơn không? (vì trong trường hợp này, tôi sẽ cần phải biết toàn bộ chiều dài (100) và sau đó chia cho kích thước của khoảng (5) để có được 20)

+5

Tôi biết đôi khi rất khó để tìm ra các cụm từ tìm kiếm tốt, nhưng nếu tôi google "chuỗi r", lần truy cập thứ hai là trang trợ giúp của 'seq'. Chức năng này có lẽ cũng là một phần của phần giới thiệu cơ bản nhất đối với R. – Roland

+3

Yea Tôi đã thử nhiều thứ và không thể tìm thấy nó .. đã không xảy ra với tôi để viết "chuỗi" .. tiếp tục suy nghĩ về khoảng thời gian – Luli

Trả lời

46

Trong R chức năng tương đương là seq và bạn có thể sử dụng nó tùy chọn by:

seq(from = 5, to = 100, by = 5) 
# [1] 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 

Ngoài by bạn cũng có thể có các tùy chọn khác như length.outalong.with.

length.out: Nếu bạn muốn nhận được tổng cộng 10 con số giữa 0 và 1, ví dụ:

seq(0, 1, length.out = 10) 
# gives 10 equally spaced numbers from 0 to 1 

along.with: Phải mất độ dài của vector bạn cung cấp như đầu vào và cung cấp một vector từ 1: độ dài (đầu vào).

seq(along.with=c(10,20,30)) 
# [1] 1 2 3 

Mặc dù, thay vì sử dụng tùy chọn along.with, bạn nên sử dụng seq_along trong trường hợp này. Từ tài liệu cho ?seq

seq là chung và chỉ có phương pháp mặc định được mô tả ở đây. Lưu ý rằng nó gửi đi trên lớp của đối số đầu tiên bất kể tên đối số. Điều này có thể có hậu quả ngoài ý muốn nếu nó được gọi với chỉ một đối số có ý định này được thực hiện như along.with: tốt hơn là sử dụng seq_along trong trường hợp đó.

seq_along: Thay vì seq(along.with(.))

seq_along(c(10,20,30)) 
# [1] 1 2 3 

Hope this helps.

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