我正在编写一个函数,该函数应计算数字(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
。为什么输出零?
答案 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循环。