Adam Żyła

Adam Żyła Tester
Oprogramowania,
Square Design Sp.z
o.o.

Temat: Pętla while - zapis wyników do wektora

Witam serdecznie

Mam pytanie:
w jaki sposób prawidłowo napisać poniższą pętle while
aby wynik z funkcji został zwrócony jako wektor?

Bezskutecznie na kilka sposobów zastąpiłem funkcje: cat() funkcją: c()

++++++++++++++++++++++++++++++++++
b=c(10:14)

funkcja1 = function() {
i=2
while (i<6) {
cat(sum(b[1]:b[i]),",")
i=i+1
}
}

funkcja1()
+++++++++++++++++++++++++++++++++++++

Życzę udanego dnia.

Temat: Pętla while - zapis wyników do wektora

Podaję dwa warianty rozwiązania: jeden z pętlą i jeden bardziej "eRowy"

funkcja1 <- function(b) { 
wynik <- c()
i<-1
while (i < length(b)) {
wynik[i] <- sum(b[1]:b[i+1])
i<-i+1
}
return(wynik)
}

funkcja2 <- function(b) {
sapply( seq_len( length(b)-1 ), function(i) {
sum(b[1]:b[i+1])
})
}


 > funkcja1(10:14)
[1] 21 33 46 60
> funkcja2(10:14)
[1] 21 33 46 60
Ten post został edytowany przez Autora dnia 04.05.16 o godzinie 13:49
Adam Żyła

Adam Żyła Tester
Oprogramowania,
Square Design Sp.z
o.o.

Temat: Pętla while - zapis wyników do wektora

Dziękuje za wyczerpującą i szybka pomoc

Temat: Pętla while - zapis wyników do wektora

Funkcja używająca "sum(b[1]:b[i+1])" nie ma przypadkiem złożoności O(n^2)?

Udało mi się znaleźć funkcję cumsum która da złożoność liniową O(n)
$ cumsum
function (x) .Primitive("cumsum")
$ cumsum(c(10:14))
[1] 10 21 33 46 60
Ten post został edytowany przez Autora dnia 17.07.16 o godzinie 11:31
Adam Żyła

Adam Żyła Tester
Oprogramowania,
Square Design Sp.z
o.o.

Temat: Pętla while - zapis wyników do wektora

Również dziękuje.
To piękne że to rozwiązanie można sprowadzić, do jednej linijki kodu.



Wyślij zaproszenie do