r - 如何将 mutate_all() 与具有多个参数的函数一起使用
问题描述
我有一个数据框 (df),我想使用 R mutate_all() 函数将一个带有两个参数的简单函数(在我的示例中为 shr())应用于数据框中的所有列。下面是一个包含 3 列的数据框的简单示例(我的实际应用程序有超过 3 列)。我可以通过反复使用 mutate 函数得到我想要的结果。而且我可以成功地将 mutate_all() 函数与只有一个参数的函数一起使用。但是我找不到正确的方法来使用具有两个或多个参数的函数的 mutate_all() 函数获得结果。帮助表示赞赏。
我尝试了很多变体,并且在 stackoverFlow 上阅读了几个 Q 和 A,但一直无法找到答案。例如,我尝试使用“如何在 mutate_all 中为任何函数使用多个参数?” 但在我的情况下,我无法成功应用答案。
library(tidyverse)
df <- data.frame(a=c(1,2,3,4),b=c(3,3,2,2),c=c(2,4,3,1))
shr <- function(x,y) {
z <- x/y
}
df1 <- mutate(df,a=shr(a,b),c=shr(c,b),b=shr(b,b)) # Gives the result I want
# df2 <- mutate_all(df, shr, ... ? # How to pass column b to this function?
预期成绩:
a b c
1 0.3333333 1 0.6666667
2 0.6666667 1 1.3333333
3 1.5000000 1 1.5000000
4 2.0000000 1 0.5000000
解决方案
你可以使用mutate_all
喜欢
dplyr::mutate_all(df, list(new = ~shr(., b)))
# a b c a_new b_new c_new
#1 1 3 2 0.333 1 0.667
#2 2 3 4 0.667 1 1.333
#3 3 2 3 1.500 1 1.500
#4 4 2 1 2.000 1 0.500
推荐阅读
- c# - 将鼠标悬停在 Selenium C# 中的元素上时测试正确的光标类型
- c++ - 当超出 BeginPlay 函数 Unreal Engine 的范围时,成员变量失去值 c++
- android - 是否可以将非抽象 ViewModel 转换为扩展它的另一个 ViewModel?
- maven - 无法解析 mojo org.owasp:dependency-check-maven:5.2.4:check 的配置
- php - 获取特定分类术语的高级自定义字段组
- python - 如何在数据集上创建、训练和打印 RandomForestClassifer 的结果
- r - 如何从动物园对象中获取特定时间的所有日期?
- ruby-on-rails - 在 Rails 中制作可选控制器需要包含哪些模块?
- ios - 从 macOS 上的 Cocoa 应用程序访问 iOS 设备
- google-cloud-functions - 将 TensorflowJS 模型保存到 Firebase 存储的最佳实践?