Thanks FJCC. I think there are three ways to get the dataframe testdf updated:
library(tidyr)
testdf <- tibble(
a = c(NA, "a"),
b = c("b", NA)
)
testdf %>% print()
testdf_bkp <- testdf
By explict return dataframe using the following function :
replaceNATest <- function(df, colName, value='Unknown') {
df[colName] <- ifelse( is.na(df[[colName]]), value, df[[colName]])
return(df)
}
testdf <- replaceNATest(testdf, "a", "Unknown Value")
testdf %>% print()
or by direct call environment variable from enclosed function (not recommended):
testdf <- testdf_bkp
replaceNATest <- function(df, colName, value='Unknown') {
df[colName] <- ifelse( is.na(df[[colName]]), value, df[[colName]])
testdf <<- df
}
replaceNATest(testdf, "a", "Unknown Value")
testdf %>% print()
or by explict assign to environment from enclosed function (not recommended):
testdf <- testdf_bkp
replaceNATest <- function(df, colName, value='Unknown', dfName ) {
df[colName] <- ifelse( is.na(df[[colName]]), value, df[[colName]])
assign(dfName, df, envir = .GlobalEnv)
}
replaceNATest(testdf, "a", "Unknown Value", dfName = "testdf")
testdf %>% print()
referenced to: