Как я могу использовать повтор в R для применения различных математических функций к одной и той же начальной переменной? Создание нового вектора из этого? - PullRequest
0 голосов
/ 07 февраля 2020

Я не понимаю какой-то механизм того, как работает «повтор», и остро нуждается в помощи.

Учитывая две начальные переменные:

i <- 0
my.sum <- i

Как мне успешно создать вектор, который увеличивает i на 1, вычисляет i ^ 2, добавляет это к 'my.sum' и печатает вектор, сообщающий 'i' и 'my.sum' для каждой итерации ?? Я хочу прекратить это l oop до того, как 'my.sum' (сумма квадратов i) превысит 250.

Вот моя последняя попытка:

i <- 0
my.sum <- i

  repeat { 
    sums <- c()
    my.sum.1 <- i+1
    my.sum.2 <- i^2
    my.sum <- c((my.sum + my.sum.1),(my.sum + my.sum.2))
    if (my.sum > 249){
      break
    }
     print(my.sum)
  }

, которая возвращает предупреждение:

условие имеет длину> 1 и будет использоваться только первый элемент

и ошибка:

Ошибка: вектор память исчерпана (предел достигнут?)

У меня были проблемы с первой ошибкой в ​​прошлом, скорее всего потому, что я точно не знаю, как работают векторы для циклов и повторения. Это источник моей ошибки или go глубже?

Мне действительно нравится работать над проблемами самостоятельно, но я часто нахожу, что меня озадачили фундаментальные концепции. Что я могу сделать, чтобы этот код работал, и как я могу добиться большего успеха в будущем?

Любая помощь очень ценится, спасибо!

Ответы [ 2 ]

2 голосов
/ 07 февраля 2020

Я бы сделал это намного проще, используя while

i <- 0 
my.sum <- i

while (my.sum <= 250) {

  i <- i + 1
  my.sum <- my.sum + i ^ 2

  cat("The value of i is:", i, "and the squared sum is", my.sum, "\n")  
}

Это похоже на то, что вы ищете?

1 голос
/ 07 февраля 2020

См. Мой комментарий, где, я думаю, вы запутались:

> repeat { 
+     sums <- c()
+     i <- i+1
+     my.sum <- i^2 +my.sum
+     
+     if (my.sum > 249){
+         break
+     }
+    print ( paste(i, my.sum ))
+ }
[1] "1 1"
[1] "2 5"
[1] "3 14"
[1] "4 30"
[1] "5 55"
[1] "6 91"
[1] "7 140"
[1] "8 204"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...