我正试图在R中写一个k-windsor中值函数。
winsor <- function(x, k) {
stopifnot(is.numeric(x))
stopifnot(all.equal(k, as.integer(k)))
n = length(x)
# cat("N is: ", n)
stopifnot(k <= (n-1)/2)
# cat("x[k+1] is: ", x[k+1])
x[1:k] <- x[k+1]
# cat("x[1:k] is: ", x[1:k])
# cat("x[n-k] is: ", x[n-k])
x[n-k+1:n] <- x[n-k]
# cat("x[n-k+1:n] is: ", x[n-k+1:n])
# cat(x)
mean(x)
}
我正在执行此说明:
winsor(c(1,2,3,4,5,6,7,8,9,10),3)
x [n-k + 1:n] 是:7 7 7 7 7 7 7 7 7 7
应该是: 7 7 7
使我的函数计算出错误的结果
有谁知道为什么x [8:10]会产生如此奇怪的结果?
谢谢!