用常量替换数据框中列的非 NA 值

Replace non NA values of a column in a dataframe with a constant

在下面的 data 中,我只想替换 yi 列的 NONE NA 值,其索引由 ind 通过 Tuke_max 值,这可能吗(保持 NA 值不变)?

下面是完全可重现的代码。

data <- read.csv("https://raw.githubusercontent.com/ilzl/i/master/j.csv")

first_third_QR <- with(data, fivenum(yi, na.rm = TRUE))[c(2,4)]

inter_QR <- with(data, IQR(yi, na.rm = TRUE))

Tukey_min <- first_third_QR[1] - (3 * inter_QR )
Tukey_max <- first_third_QR[2] + (3 * inter_QR )

ind <- with(data, yi < Tukey_min | yi > Tukey_max)

( yi_vec <- with(data, yi[ind]) ) # Replace the none NA `yi` values below in the `data` 
                                  # with Tukey_max (leave NAs untouched)

#[1] 4.122057 3.457194 3.071523 3.545027 4.454427       NA       NA       NA
#[9]       NA       NA       NA       NA       NA       NA       NA 4.119231 
#[17] 3.977800 6.412906

需要做两件事,获得 ind 与非 NA 的连接,并按数值索引,以免 NA 作为索引.
一条线就可以做到。

data$yi[ which(ind & !is.na(data$yi)) ] <- Tukey_max