2012-04-23 42 views
16

Tôi cố gắng để viết một vòng lặp for mà sẽ tăng giá trị của nó bằng 2. Mã tương đương được c làĐối với loop trong R với gia số

for (i=0; i<=78; i=i+2) 

Làm thế nào để đạt được cùng một trong R?

+5

hãy đăng một ví dụ hoàn chỉnh hơn ... trong R có thể bạn không thực sự muốn có vòng lặp for. – John

Trả lời

38

Xem ?seq để biết thêm:

for(i in seq(from=1, to=78, by=2)){ 
# stuff, such as 
    print(i) 
} 

hoặc

for(i in seq(1, 78, 2)) 

tái bút: Xin lỗi sự thiếu hiểu biết của tôi. Ở đó, tôi chỉ ra ngoài.

Tuy nhiên, đây là một cách để làm những gì bạn muốn trong R (xin xem mã cập nhật)

EDIT

Sau khi biết một chút về cách C hoạt động, nó trông giống như ví dụ posted in câu hỏi lặp lại theo trình tự sau: 0 2 4 6 8 ... 74 76 78.

Để sao chép chính xác trong R, hãy bắt đầu tại 0 thay vì tại 1, như trên.

seq(from=0, to=78, by=2) 
[1] 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 
[24] 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 
+3

@Probabilityman Nó có lẽ đáng giá thêm, thường sử dụng 'for loop' là không cần thiết trong R. Nếu bạn cung cấp một ví dụ hoàn chỉnh hơn về vấn đề cụ thể của bạn (hoặc hỏi một câu hỏi khác), có thể là' for loop' có thể được bỏ qua hoàn toàn. Ví dụ, 'print (seq (1,72,2))' thực hiện tương tự như mã được cung cấp bởi BenBarnes. – Justin

+0

... và ví dụ của @ Justin nhanh hơn nhiều. Tìm kiếm internets cho "r for loops" để biết thêm thông tin. – BenBarnes

+0

@Justin, in (seq (1,72,2)) tạo ra đầu ra khác nhau. Vòng lặp in mỗi phần tử dưới dạng 1-tuple (trên một dòng riêng). Không phải là điều này được ưa thích. Nếu vòng lặp có thể được thay thế bằng một hoạt động vectơ (hoặc áp dụng), có lẽ nó nên là. –

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