在 R 中的函数中调用参数名称

Call an argument name within a function in R

我想创建一个通用函数 naTrans,用 NA 替换 'NA'''

问题是我无法用函数内创建的修改后的 test 数据帧 (mydf) 替换全局环境中的数据帧 test。这是我最好的尝试。

# Example dataframe containing 'NA'
test <- as.data.frame(matrix(sample(c('NA', 1:9), 10*10, TRUE), 10))

# My function
naTrans <- function (mydf) {
  mydf[mydf == 'NA' | mydf ==''] <- NA
  assign(deparse(substitute(mydf))[1], mydf, envir = globalenv())
}

test <- naTrans(test)

any(is.na(test))
# [1] FALSE

肯定是最后一行代码的问题assign(print(deparse(substitute(mydf))), mydf, envir = globalenv())

有什么想法吗?

希望代码中的注释够清楚

test <- as.data.frame(matrix(sample(c('NA',1:9),10*10,T),10))

naTrans <- function (mydf) {
      mydf[mydf == 'NA' | mydf == ''] <- NA # use and or opertor, %in% don't work on DF but on vectors
      return(mydf) # return the modified mydf (the return is optionnal, you may just use mydf here 
}

test <- naTrans(test) # replace actual object by caller.