2012-04-23 11 views
16

Próbuję napisać pętli for, które spowodują przyrost jej wartości przez 2. Równowartość kodu c jestNa pętli w R z przyrostami

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

Jak mogę osiągnąć to samo w R?

+5

proszę wysłać bardziej kompletny przykład ... w R jest prawdopodobne, że faktycznie nie chcesz pętli for. – John

Odpowiedz

38

Zobacz ?seq o więcej informacji:

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

lub

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

PS: Wybacz mi ignorancję C. Tam po prostu się wyprowadziłem.

Jest to jednak sposób, aby robić to, co chcesz w R (proszę zobaczyć zaktualizowany kod)

EDIT

Po zapoznaniu się trochę jak C działa, to wygląda na przykład pisał w pytanie iteruje w następującej sekwencji: 0 2 4 6 8 ... 74 76 78.

Aby powielić dokładnie to w R, zacznij od 0 zamiast od 1, jak wyżej.

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 Pewnie warto dodać, że często używanie 'pętli for 'jest niepotrzebne w R. Jeśli podasz dokładniejszy przykład twojego konkretnego problemu (lub zadaj inne pytanie), całkiem możliwe, że' for loop' można całkowicie pominąć. Na przykład 'print (seq (1,72.2)) robi to samo co kod dostarczony przez BenBarnesa. – Justin

+0

... a przykład @ Justina jest znacznie szybszy. Wyszukaj w Internecie "r dla pętli", aby uzyskać więcej informacji. – BenBarnes

+0

@Justin, print (seq (1,72,2)) daje inną wydajność. Pętla drukuje każdy element jako 1-tkę (w osobnej linii). Nie żeby to było preferowane. Jeśli pętlę można zastąpić operacją wektorową (lub zastosować), prawdopodobnie powinno to być. –

Powiązane problemy