我们可以将函数更改为使用“age”作为输入参数。此外,更改“是”以返回字符元素,而不是数字元素,即。
"999"
if_else
是特定于类型的,与
ifelse
replace_NA <- function(x, age){
if_else(x=="#NA#" & {{age}}>14, "999", x)
}
并将其测试为
library(dplyr)
df %>%
mutate(across(where(is.character), replace_NA, age = age))
-输出
age var1 var2 num_var
1 20 999 hello 35
2 30 bye 999 32
3 10 hi #NA# 35
df <- structure(list(age = c(20L, 30L, 10L), var1 = c("#NA#", "bye",
"hi"), var2 = c("hello", "#NA#", "#NA#"), num_var = c(35L, 32L,
35L)), class = "data.frame", row.names = c(NA, -3L))