r - 为什么函数不创建新数据集?
问题描述
我正在尝试通过使用函数来分块我的代码来清理一些数据。
我对以下代码没有任何问题。
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, .)))
当我这样做时,代码运行时没有错误或警告。但是,函数体对我的数据集没有任何作用。我在这里错过了什么吗?任何帮助深表感谢!
解决方案
您的函数无法就地修改对象。这就是 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)
推荐阅读
- android - [android][flutter][build]如何使用不同的 main.dart 运行 Android App Debug 配置?
- c# - 为什么我不能从具有“in T”的逆变委托返回 T,为什么不能将 T 作为具有“out T”的协变委托的参数?
- authentication - 用于工具 Git/JENKINS/JFROG 的 OpenShift 身份验证服务器
- java - 为什么 cordova 选择了错误的 JDK 版本?
- bash - 如何以相同的输出多次运行 bash 脚本?
- android - 构建一个自定义appbar android,里面有圆形图像和两行标题
- firebase - 如何在flutter中使用linkwithcredential函数。当用户已经向不同的身份验证提供者注册时出现错误。无法链接
- python - 删除 HTML 文件中的强标签
- javascript - 如何在向表中添加列时动态更改列标题
- pci - 了解清除 PCI 错误位