Возврат вектора петли в R - PullRequest
0 голосов
/ 09 ноября 2018

Я пишу функцию, которая должна вычислять следующие числа чисел (1 - x) ^ 2. Тем не менее, моя функция возвращает нули, и я не знаю, почему:

ban <- function(x){
  res <- vector(mode = "numeric", length(x))
  for(i in x) 
    { res[i] <- (1 - res[i])^2}
  return(res)
}   

ввод: ban(c(0.5, 0.6)) дает вывод: [1] 0 0. Почему выходные нули?

1 Ответ

0 голосов
/ 09 ноября 2018

Ваш res -вектор инициализируется нулями. Вы можете увидеть это с помощью:

vector(mode = "numeric", length = length(c(0.5, 0.6)))
# [1] 0 0

Далее в вашем for цикле вы перебираете x и используете это для доступа к записям в res. Но ваш x -вектор содержит нецелые значения, поэтому доступ не работает:

res <- c(1, 2)
res[0.5]
# numeric(0)

В R вы можете делать вычисления для таких векторов

x <- c(0.5, 0.6)

(1-x)^2
# [1] 0.25 0.16

так что вам здесь не нужен цикл for.

...