Je suis nouveau sur ce site et sur R et je deviens fou de trouver la réponse à ces deux résumés. Sauriez-vous ce que j'ai fait de mal dans le code? Le code doit être fait pour fonctionner avec un seul varinate, en tapant summer (77). Merci beaucoup
i = 1
summer <- function(N){
for (k in 1:N ) {
sum((i-1)/i)
}
}
summer(77)
3 Réponses :
Vous devriez utiliser la vectorisation intégrée de R pour vous aider ici:
summer <- function(N) sum(1 - seq(N)^-1) summer(77) #> [1] 72.0725
Avec un minimum de modifications pour que votre code fonctionne.
summer <- function(N) {
total <- 0L
for (i in 1:N ) {
total <- total + (i - 1) / i
}
total
}
summer(77)
# [1] 72.0725
Vous pouvez exploiter le vecteur R pour faire des sommations comme celles-ci dans ce cas 1: N crée le vecteur alors il vous suffit de faire vos calculs sur ledit vecteur
summer_simple <- function(N) {
sum(1-1/1:N)
}
summer_simple(10)
Ou simplement
what_we_do_on_each_step <- function(number) {
1-1/number
}
what_we_do_on_each_step(1:10)
summer <- function(N) {
vector <- 1:N
vector_after_calculation <- what_we_do_on_each_step(vector)
sum(vector_after_calculation)
}
summer(10)
dans votre code, la réponse sera toujours zéro. puisque je ne change pas
vous devriez avoir
summer <- function(N){k <- 0;for (i in 1:N) k = k + (i-1)/i; k}ou simplement mettresummer <- function(N) {i <- 1:N; sum(1-1/i)}