为什么r中的for循环函数不起作用(试图截断数据集中的异常值)
我试图用数据集中最近的值替换极值。我知道ifelse()工作得更好,但我只是想知道为什么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
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
}