为什么r中的for循环函数不起作用(试图截断数据集中的异常值)

为什么r中的for循环函数不起作用(试图截断数据集中的异常值),r,for-loop,R,For Loop,我试图用数据集中最近的值替换极值。我知道ifelse()工作得更好,但我只是想知道为什么for循环不工作 truncate <- function(a){ m <- mean(a) sd <- sd(a) up <- m+3*sd low <- m-3*sd a1 <- c() for (i in 1:length(a)){ if (a[i] > up) { a1[i] = up } if

我试图用数据集中最近的值替换极值。我知道ifelse()工作得更好,但我只是想知道为什么for循环不工作

truncate <- function(a){
  m <- mean(a)
  sd <- sd(a)
  up <- m+3*sd
  low <- m-3*sd
  a1 <- c()
  for (i in 1:length(a)){
    if (a[i] > up) {
      a1[i] = up
      }
    if (a[i] < low){
      a1[i] = low
      }
    else {
      a1[i] = a[i]
    }
    }
  return (a1)
  } 
a <- c(1:100)

truncatefor循环工作正常,并在
1:length(a)
的元素中迭代。我假设您给出的是
afor循环工作正常,并且迭代
1:length(a)
的元素。我假设您正在给
一个
truncate <- function(a) {
    m <- mean(a)
    sd <- sd(a)
    up <- m+3*sd
    low <- m-3*sd
    a[a > up] <- up
    a[a < low] <- low
    a
}