Beata Ostrowska

Beata Ostrowska Controller, Grupa
Azoty

Temat: Pętla FOR

Jak robić pętlę generującą przypadkowe liczby?Ten post został edytowany przez Autora dnia 11.10.15 o godzinie 20:03
Wojciech Obłąk

Wojciech Obłąk Programista, Asseco
Poland

Temat: Pętla FOR

Dobrze zrobiłaś, jeszcze tylko wyświetl wektor y i wektor z.


#losowanie i zaokrąglenie
v4 <- rnorm(300,mean=100,sd=10)
v <- round(v4,0)

#deklaracja wektorów
y <- numeric(0) #wektor parzystych
z <- numeric(0) #wektor nieparzystych

#pętla odpowiednio uzupełniająca wektory elementami wektora v
for (i in 1:length(v)) {
if(v[i]%%2==0) {
y <- c(y,v[i])
} else {
z <- c(z,v[i])
}
i=i+1
}

#komunikat
cat("wylosowane liczby parzyste to: ",y)
cat("wylosowane liczby nieparzyste to: ",z)


do poczytania o pętlach:
strona( 53/45)
https://cran.r-project.org/doc/contrib/Biecek-R-basics.pdfTen post został edytowany przez Autora dnia 07.08.16 o godzinie 23:23
Beata Ostrowska

Beata Ostrowska Controller, Grupa
Azoty

Temat: Pętla FOR

Dziękuję pięknie za pomoc, już rozumiemTen post został edytowany przez Autora dnia 11.10.15 o godzinie 20:03

Temat: Pętla FOR

Cały czas porównywana jest jedna i ta sama wartość y, stąd pętla nieskończona. W pętli while trzeba samodzielnie zmieniać jej wartość. Jest to cena za większą elastyczność niż w pętli for.

 > y <- 1
> while( y < 10 ) {
+ print(y)
+ y <- y+2
+ }
[1] 1
[1] 3
[1] 5
[1] 7
[1] 9
Beata Ostrowska

Beata Ostrowska Controller, Grupa
Azoty

Temat: Pętla FOR

Chodzi o coś takiego., w dobrym kierunku zmierzam?

while(y<v){print(y)
y<-v%%2}Ten post został edytowany przez Autora dnia 11.10.15 o godzinie 20:03

Temat: Pętla FOR

Wojciech O.:

No niestety, ale pętla jest skonstruowana niepoprawnie. Zmienna "i" przybiera kolejne wartości ze zbioru v, nie jest zaś jego indeksem. Byłaby w konstrukcji: for(i in 1:length(v)) lub lepiej for(i in seq_len(length(v))) { ..... v[i] .....}

Porównaj: sort(c(y, z)) == sort(v)

Poprawnie:

v4 <- rnorm(300,mean=100,sd=10)
v <- round(v4,0)

y <- numeric(0) #wektor parzystych
z <- numeric(0) #wektor nieparzystych

#pętla odpowiednio uzupełniająca wektory elementami wektora v
for (i in v) {
if( i %% 2 == 0) {
y <- c(y, i)
} else {
z <- c(z, i)
}
}


Przy okazji - polecam nazywać opisowo zmienne. Za chwilę nikt nie będzie pamiętał, co to znaczy "x, y, z, v" itd.Ten post został edytowany przez Autora dnia 11.10.15 o godzinie 20:28

Temat: Pętla FOR

Beata O.:
Chodzi o coś takiego., w dobrym kierunku zmierzam?

while(y<v){print(y)
> y<-v%%2}

 los <- rnorm(300,mean=100,sd=10)
zaokr_los <- round(los ,0)

parz <- numeric(0)
nieparz <- numeric(0)

i <- 1
while(i <= length(zaokr_los)) {

liczba <- zaokr_los[i]
if(liczba %% 2 == 0) {
parz <- c(parz, liczba)
} else {
nieparz <- c(nieparz, liczba)
}
i <- i+1
}


---
I po co ta zmiana zawartości wpisów w wątku?Ten post został edytowany przez Autora dnia 12.10.15 o godzinie 07:56



Wyślij zaproszenie do