用序列替换向量中的 NA 值

Tom*_*Tom 5 r vector na

我有数据如下:

avec <- c("somevar", NA ,"anothervar", NA, "thisvar","thatvar", NA, "lastvar", NA )
Run Code Online (Sandbox Code Playgroud)

我想做的就是用连续的变量名替换 ,NA中的所有值,例如to 。我认为这会很容易,但我在堆栈上找不到任何东西。avecx001x00n

期望的输出:

avec <- c("somevar", "x001","anothervar", "x002", "thisvar","thatvar", "x003", "lastvar", "x004")
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

dan*_*ooo 2


avec <- c("somevar", NA ,"anothervar", NA, "thisvar","thatvar", NA, "lastvar", NA )
na_pos <- 1
for (i in avec |> length() |> seq()) {
  if (is.na(avec[[i]])) {
    avec[[i]] <- sprintf("X%03i", na_pos)
    na_pos <- na_pos + 1
  }
}
avec

# [1] "somevar"    "X001"       "anothervar" "X002"       "thisvar"    "thatvar"    "X003"       "lastvar"    "X004"      
Run Code Online (Sandbox Code Playgroud)