R中的循环向量返回

时间:2018-11-09 07:11:07

标签: r function loops

我正在编写一个函数,该函数应计算数字(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 :(得分:2)

您的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循环。