首页 > 解决方案 > 为什么函数不创建新数据集?

问题描述

我正在尝试通过使用函数来分块我的代码来清理一些数据。

我对以下代码没有任何问题。

dat <- read_dta('file.dta')

dat <- mutate_at(dat, vars(a,b,c,...,z), list(~ ifelse(. == 9 | . == 99 | . == 999, NA, .)))

使用此代码,我没有任何问题。但是,我想把它变成一个函数。为此,我输入了以下代码:

dat <- read_dta('file.dta')

f1 <- function(){
  dat <- mutate_at(dat, vars(a,b,c,...,z), list(~ ifelse(. == 9 | . == 99 | . == 999, NA, .)))

当我这样做时,代码运行时没有错误或警告。但是,函数体对我的数据集没有任何作用。我在这里错过了什么吗?任何帮助深表感谢!

标签: rdataframe

解决方案


您的函数无法就地修改对象。这就是 R 的工作原理。你需要这样的东西:

dat <- read_dta('file.dta')

f1 <- function(x){
  mutate_at(x, vars(a,b,c,...,z), list(~ ifelse(. == 9 | . == 99 | . == 999, NA, .)))}

dat <- f1(dat)

推荐阅读