R中向量的范围索引的奇怪结果

时间:2014-11-05 02:06:25

标签: r

我正试图在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]会产生如此奇怪的结果?

谢谢!

1 个答案:

答案 0 :(得分:2)

将括号放在x索引处。

x[(n-k+1):n]

运算符:位于算术运算符see this for details)之前。

[]&#39; S