我有数据如下:
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)
我该怎么做?
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)