取代 Soft-deprecated funs() 的独特挑战

2024-01-05

问题:

我有一个仅由数字数据类型的变量组成的 DataFrame。我有一个例程,过去在检查 DataFrame 中的每个变量是否有统计异常值并用 NA 值替换任何已识别的异常值方面做得很好。然而,这个例程利用了最近被软弃用的 funs()。

研究过这个问题后,我知道你应该能够基本上用 list(~ example_func()) 替换 funs() 例如:

>funs(mean(., trim = .2), median(., na.rm = TRUE))
>
>Would become:
>
>list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))

不幸的是,这种补救措施在我的用例中不起作用。

功能正常但现已软弃用的代码:

以下代码有效,如下所示(对于具有离群值的变量,离群值被替换为 NA 值);但是,它会触发有关现已软弃用的 funs() 的警告:

> # Which variables have missing values
> sapply(training_imptd, function(x) sum(is.na(x)))
           INDEX      TARGET_WINS   TEAM_BATTING_H  TEAM_BATTING_2B  TEAM_BATTING_3B 
               0                0                0                0                0 
 TEAM_BATTING_HR  TEAM_BATTING_BB  TEAM_BATTING_SO  TEAM_BASERUN_SB  TEAM_BASERUN_CS 
               0                0              102              131              772 
TEAM_BATTING_HBP  TEAM_PITCHING_H TEAM_PITCHING_HR TEAM_PITCHING_BB TEAM_PITCHING_SO 
            2085                0                0                0              102 
 TEAM_FIELDING_E TEAM_FIELDING_DP 
               0              286 
> 
> # Identify outliers and set them to NA (NAs to be fixed in next step by mice)
> training_imptd <- training_imptd %>%
+   mutate_all(
+     funs(ifelse(. %in% boxplot.stats(training_imptd$.)$out, NA, .))
+   )
>
> Warning: funs() is soft deprecated as of dplyr 0.8.0
> Please use a list of either functions or lambdas: 
> 
>   # Simple named list: 
>   list(mean = mean, median = median)
> 
>   # Auto named with `tibble::lst()`: 
>   tibble::lst(mean, median)
> 
>   # Using lambdas
>   list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))
> This warning is displayed once per session. 
>
> # Which variables have missing values (after imputing NA for outliers)
> sapply(training_imptd, function(x) sum(is.na(x)))
           INDEX      TARGET_WINS   TEAM_BATTING_H  TEAM_BATTING_2B  TEAM_BATTING_3B 
               0               32               67               15               29 
 TEAM_BATTING_HR  TEAM_BATTING_BB  TEAM_BATTING_SO  TEAM_BASERUN_SB  TEAM_BASERUN_CS 
               0              129              102              252              827 
TEAM_BATTING_HBP  TEAM_PITCHING_H TEAM_PITCHING_HR TEAM_PITCHING_BB TEAM_PITCHING_SO 
            2086              213                4               90              140 
 TEAM_FIELDING_E TEAM_FIELDING_DP 
             303              318 

修复后的代码应该可以工作,但没有:

根据我读到的有关用 list(~ example_func()) 替换 funs() 的内容,我希望以下代码的执行与上面利用 funs() 的代码完全相同,但事实并非如此(对于具有异常值的变量) ,异常值不会被 NA 值替换):

> # Which variables have missing values
> sapply(training_imptd, function(x) sum(is.na(x)))
           INDEX      TARGET_WINS   TEAM_BATTING_H  TEAM_BATTING_2B  TEAM_BATTING_3B 
               0                0                0                0                0 
 TEAM_BATTING_HR  TEAM_BATTING_BB  TEAM_BATTING_SO  TEAM_BASERUN_SB  TEAM_BASERUN_CS 
               0                0              102              131              772 
TEAM_BATTING_HBP  TEAM_PITCHING_H TEAM_PITCHING_HR TEAM_PITCHING_BB TEAM_PITCHING_SO 
            2085                0                0                0              102 
 TEAM_FIELDING_E TEAM_FIELDING_DP 
               0              286 
> 
> # Identify outliers and set them to NA (NAs to be fixed in next step by mice)
> training_imptd <- training_imptd %>%
+   mutate_all(
+     list(~ ifelse(. %in% boxplot.stats(training_imptd$.)$out, NA, .))
+   )
> 
> # Which variables have missing values (after imputing NA for outliers)
> sapply(training_imptd, function(x) sum(is.na(x)))
           INDEX      TARGET_WINS   TEAM_BATTING_H  TEAM_BATTING_2B  TEAM_BATTING_3B 
               0                0                0                0                0 
 TEAM_BATTING_HR  TEAM_BATTING_BB  TEAM_BATTING_SO  TEAM_BASERUN_SB  TEAM_BASERUN_CS 
               0                0              102              131              772 
TEAM_BATTING_HBP  TEAM_PITCHING_H TEAM_PITCHING_HR TEAM_PITCHING_BB TEAM_PITCHING_SO 
            2085                0                0                0              102 
 TEAM_FIELDING_E TEAM_FIELDING_DP 
               0              286 

删除不必要的training_imptd$从你的函数内部。代词.已经引用了“当前列”,因此您可以将其传递给boxplot.stats()直接地:

training_imptd %>%
  mutate_all(
    ~ifelse(. %in% boxplot.stats(.)$out, NA, .)
  )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

取代 Soft-deprecated funs() 的独特挑战 的相关文章

  • 在 R 中绘制决策树(插入符)

    我已经训练了一个数据集rf方法 例如 ctrl lt trainControl method LGOCV repeats 3 savePred TRUE verboseIter TRUE preProcOptions list thresh
  • 使用 kableExtra 增加行/行间距

    有没有办法在 r markdown 或 bookdown 中使用 kableExtra 增加 pdf 输出的行间距 library knitr library kableExtra kable head iris 5 caption Iri
  • 聚合时间

    我的数据包含 1 分钟测量值 我希望将其聚合为 5 分钟和 10 分钟 如何在 10 分钟内将 日 列的数据分组为 5 样本数据2 structure list Day c Monday Monday Monday Monday Monda
  • 使用 != 子集 data.table 也排除 NA

    我有一个 data table 其中有一列NAs 我想删除该列具有特定值的行 恰好是 然而 我的第一次尝试导致我失去了行NA还有 gt a c 1 NA gt x lt data table a x a 1 1 2 3 NA gt y lt
  • 在 R 中根据时间序列数据制作 3D 曲面

    我有一个大型数据集 我想从中制作 3D 表面 我希望 x 轴为日期 y 轴为时间 24 小时 z 轴 高度 为我的值 我是 R 初学者 所以越简单越好 http www quantmod com examples chartSeries3d
  • r - 根据第一个向量重新排序第二个向量

    寻找解决方案来执行以下操作 有两个向量 a lt c 2 1 3 4 7 6 5 9 8 10 b lt c 3 2 1 6 5 4 7 8 9 10 我想创建第三个向量 它给出向量的顺序b需要重新排序 使其顺序与a 在这种情况下我想得到
  • 根据用户输入将 n 个反应式单选按钮添加到闪亮的应用程序

    我正在尝试创建一个闪亮的应用程序 用户可以在其中从数据框中选择变量以便对数据进行子集化 输出 最终 将是包含用户子集的数据表 我需要根据用户为子集选择的变量数量创建 n 个输入框 理想情况下 输入框将是动态单选按钮 用于子集因子 我还没有开
  • 如何绘制对数似然函数图

    我想绘制 pi 和 pi 之间的对数似然函数 对数似然函数 llh lt function teta x sum log 1 cos x teta 2 pi x c 3 91 4 85 2 28 4 06 3 70 4 04 5 46 3
  • 从 glmnet 获取变量选择顺序

    我一直在使用 glmnet R 包为一个目标变量 Y 数字 和 762 个协变量构建 LASSO 回归模型 我使用 glmnet 函数 然后coef fit s 0 056360 获取该特定 lambda 值的系数值 我现在需要的是变量选择
  • 使用 ggplot 绘制函数,相当于 curve()

    是否有使用绘制函数的等效方法ggplot to the curve 基础图形中使用的命令 我想另一种选择是创建一个函数值向量并绘制一条连接线 但我希望有更简单的东西 Thanks 您可以使用以下命令添加曲线stat function ggp
  • 在 R 中查找 Windows 用户名

    有没有办法在 R 会话中获取当前的 Windows 用户名或 Windows 主目录 Thanks 抱歉 如果我错过了什么 但我找不到任何东西 你可以做 Sys getenv USERNAME Sys getenv HOME 如果你只是输入
  • 挖泥机子集 (MuMIn) - 如果存在主效应,则必须包括交互作用

    我正在使用 dredge MuMIn 进行一些探索性工作 在此过程中 我想将两个变量设置为仅当它们之间存在相互作用时才允许一起出现 即它们不能仅作为主要效果一起出现 使用样本数据 我想挖掘模型 fm1 尽管它可能没有意义 如果变量 GNP
  • 在另一个函数中定义一个函数的优雅方式

    我想构建 f lt function g lt function x x 2 list 这样我就可以使用调用f g 4 并有list 导致list 16 一般来说我会在里面定义几个临时函数f用户在调用时可以调用f 我已经尝试过assign
  • 使用 ggplot 将条形图的列与线图的点对齐

    当线图的点与条形图的条具有相同的 x 轴时 有什么方法可以使用 ggplot 将它们对齐 这是我尝试使用的示例数据 library ggplot2 library gridExtra data data frame x rep 1 27 e
  • 如何解决在Windows中运行R时出现“剪贴板缓冲区已满且输出丢失”错误?

    我正在尝试将一些数据直接从 R 复制到我的 Windows 计算机中的剪贴板 我发现在一些网站上使用 file clipboard 可以工作 确实如此 但对于非常小的数据集 例如 如果我复制一个小数据集 100 个 obs 它会顺利工作 d
  • 为什么我收到保存错误、软盘错误的消息?

    我最近更新了 R 和 R studio 当我尝试保存文件时 收到一条错误消息 保存 文件名 时出错 驱动器中的软盘错误 将 2 卷序列号 3 插入驱动器 1 这是第一次看到这个错误信息 不知道该怎么办 我也无法 另存为 感谢您的帮助 尝试使
  • 重叠并固定小平面中的 x 尺度(尺度=“自由”)以制作电影

    在另一篇文章中 Justin 的帮助下 我用以下方法绘制了模拟结果facet gridggplot2 中的选项 包含数据和答案的帖子在这里 使用facet grid选项通过ggplot2绘制数据框的列 https stackoverflow
  • 使用 data() 的 R 包命名空间问题 -- 找不到数据集

    我在尝试在我自己的包中导入包 即 robfilter 时遇到了问题 我尝试使用它的方法之一 adore filter 在这一行失败 data critvals 出现错误 未找到数据集 critvals 如果我通过 require robfi
  • 计算带状矩阵的 colCumsums 的更快替代方案

    我是 R 和 stats 的新手 在我当前工作的领域中 我需要以独特的方式计算累积列总和 最初提供宽度为 b 行数为 n 的方带矩阵 例如 n 8 且 b 3 0 1 2 7 0 0 0 0 0 0 3 6 7 0 0 0 0 0 0 3
  • 在前两个冒号上分割字符串

    我想在前两个冒号上拆分一列字符串 但不在任何后续冒号上拆分 my data lt read table text my string some data 123 34 56 78 100 87 65 43 21 200 a4 b6 c888

随机推荐

  • JavaScript 正则表达式 URL 仅提取域

    目前我可以使用以下正则表达式从任何 URL 中提取 域 https n www n im 不过 我也得到了我想避免的子域名 例如 如果我有网站 www google com yahoo com 某事 freds meatmarket co
  • 为什么“sail up”命令没有构建我的 laravel docker 容器?

    我正在尝试 Laravel Sail 因为我已经成功使用 Laradock 几年了 并希望简化我的开发环境设置 我使用的是 Windows 10 64 使用 WSL 2 安装了 Docker Desktop 3 0 并且我的 Laravel
  • 如何在刷新后让用户保持登录到 Firebase 应用程序?

    我有一个内置于 firebase 和 Angular 的应用程序 并且希望能够在刷新页面后保持用户登录 现在我有一个登录屏幕 其中有两个绑定到控制器的基本输入字段 this email this pass this emessage thi
  • Spring Security有Ip地址问题

    我在控制器中有一个使用以下配置的方法 RequestMapping value encore userName token method RequestMethod GET ResponseBody PreAuthorize hasIpAd
  • 使用新的 Google Jetpack 组件的最低 Android API 级别是多少

    我已经开始学习 RxJava 我知道有一些新的 Google 组件 如 LiveData 数据绑定等 我想知道使用它们的最低 Android API 级别是多少 我可以在 21 或 23 等较旧的 API 中利用它们吗 直接从文档中http
  • 无法使用 EPPlus 删除工作表

    我正在使用这段代码 ExcelPackage pck new ExcelPackage newFile var wk pck Workbook Worksheets SingleOrDefault x gt x Name Content p
  • jquery validate 添加方法来验证日期时间

    我正在使用我找到的日期时间选择器插件here http trentrichardson com examples timepicker 效果很好 现在唯一的问题是它破坏了包含的标准日期验证jquery 验证插件 http docs jque
  • 在调试器中查看 DLL 中的 pimpl

    我使用 pimpl 习惯用法来隐藏接口的实现细节 以便我可以采取某种 ABI 保护措施 我不太熟悉 MS 的来龙去脉 我的大部分开发生涯都使用 Linux 我无法从调试器检查窗口查看 pimpl 的内部 我的类型仅扩展至 impl 的原始指
  • Google App Engine ( Java ):URL 提取响应太大问题

    我正在尝试在谷歌应用程序上构建某种网络服务 现在的问题是 我需要从网站获取数据 HTML 抓取 该请求如下所示 URL url new URL p url con HttpURLConnection url openConnection I
  • 计算循环空间复杂度的基础是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 想象一下 您循环 n 次 并且每次迭代都会创建一个空间 n 的字符串 其范围仅在该迭代内 因此在下一次迭代中不再可访问 我会说我使用 O
  • 在插入大量数据时关闭node.js中的mongodb连接

    我正在尝试编写一个程序来解析 iis 日志数据并将其插入到 mongodb 中 文件不是那么大 大约 600 行 试图说服我的管理 Nodejs 和 mongodb 比 net 和 sql server 更好 在nodejs中看一下下面的代
  • 在 React Bootstrap 中设置 Form.Check(复选框)控件的样式

    我是反应和引导程序的初学者 我想知道 如何设计 Form Check 复选框 的样式 以便可以用更好的样式覆盖默认的外观和感觉 比如开关或任何其他外观和感觉 这就是我尝试过的 我使用了 css 样式 但它没有按预期工作 MyForm js
  • iOS 5 JSON 解析导致 Cocoa 错误 3840

    我很难在 iOS 5 上解析下面的 JSON 字符串 States Name Arizona Cities Name Phoenix Name California Cities Name Orange County Name Rivers
  • 如何访问Android应用程序的classes.dex?

    当活动启动时 系统会加载classes dex文件并开始执行指令 我需要对当前活动正在执行的同一应用程序的classes dex 进行只读访问 在网上搜索了几个小时后 我只能推断Android安全系统不允许访问应用程序沙箱 但是 我需要对c
  • WebMethod 自动将类对象返回为 JSON

    谁能解释一下 ASP NET 如何处理从类对象到 WebMethods 中的 JSON 对象的转换 例如 您有以下 WebMethod 它返回一个Person object WebMethod public static Person Ge
  • scala:跟踪隐式选择和其他代码魔法

    当试图弄清楚库如何工作时 隐式转换会令人困惑 例如 查看像 val foo Foo 1 这样的表达式 什么将 1 转换为 Foo 是否可以指示 scala 库 或 REPL 打印出在计算表达式时正在执行的代码路径 您可以将 Xprint t
  • 正确计算发送到死信SQS队列的消息数

    我希望 grafana 报告在任何给定时间死信队列中有多少消息 由于最终在此队列中的消息的性质 将评估和解析最终在此队列中的消息 我已将 grafana 配置为读取NumberOfMessagesSent from a dead lette
  • 方法在哪里?堆栈还是堆?

    我知道方法的局部变量和参数位于堆栈中 但我无法弄清楚在 Java 中方法实际上位于哪里 如果我声明任何 Thread 对象 例如 Thread t new Thread t start 所以这意味着我已经创建了除主方法之外的单独的方法调用
  • 找不到 TypeScript 编译器

    我正在使用 Visual Studio 2012 和 TypeScript 版本 0 9 5 我也在使用 web Essentials 2 8 当我尝试保存 TypeScript 文件后 它显示 编译错误 详细信息请参见错误列表 找不到 T
  • 取代 Soft-deprecated funs() 的独特挑战

    问题 我有一个仅由数字数据类型的变量组成的 DataFrame 我有一个例程 过去在检查 DataFrame 中的每个变量是否有统计异常值并用 NA 值替换任何已识别的异常值方面做得很好 然而 这个例程利用了最近被软弃用的 funs 研究过