цикл while в R, который будет печатать значения log (x), используя эту формулу - PullRequest
0 голосов
/ 03 марта 2019

Я хочу написать цикл R while, который будет печатать значения log (x) по формуле

log(x) = −0.076 + 0.281x −0.238/(x+0.15),

встроенная функция R log10,и абсолютная разница между этими двумя значениями для следующих значений x: x = 0.1, 0.2, . . . , 0.9, 1.0

Мой код приведен ниже:

x <- seq(0.1, 1, by = 0.1)
i <- 0
while(i < 10) {
  i <- i + 1
  LOG[i] <- -0.076 + 0.281*x[i] - 0.238/(x[i] + 0.15)
  lg[i] <- log10(x[i])
  ab[i] <- abs(lg[i] - LOG[i])
  cat("i = ", i, "LOG = ", LOG, "log = ", lg, "abs = ", ab, fill = TRUE)
}

Но у меня есть ошибка:

Error: object 'LOG' not found.

Что я делаю не так?Нужно ли создавать объект LOG<-NULL?Спасибо

1 Ответ

0 голосов
/ 03 марта 2019

Да, вам нужно сначала создать объекты LOG, lg и ab.

НО R имеет замечательную функцию, называемую векторизацией, которая позволяет применять операцию к каждому элементу вектора одновременно (без необходимости в цикле).Код может идти так:

x <- seq(0.1, 1, by=0.1)
LOG <- -0.076+0.281*x-0.238/(x+0.15)
lg <- log10(x)
ab <- abs(lg - LOG)
...