r - 在 r 中用宏(函数)总结时找不到对象
问题描述
我正在尝试使用function
and制作宏dplyr
。
我想要做的是summarise
特定的变量。中function
,变量为i
。年龄在dataset
fun<-function(i){
dataset%>%dplyr::summarise(t1=mean(i),t2=sd(i))
}
fun(i=age)
当我没有执行summarise
时function
,它起作用了。但是,function
出现了错误。
Error in .f(.x[[i]], ...) : object 'age' not found
任何人都可以帮我知道是什么问题吗?
解决方案
我们可以使用{{}}
运算符来评估传递给函数的不带引号的列名
library(dplyr)
library(rlang)
fun<-function(datasset, i){
dataset%>%
dplyr::summarise(t1=mean({{i}}),
t2=sd({{i}})
}
fun(dataset, age)
或者另一种选择是使用enquo
和评估 ( !!
)
fun<-function(dataset, i){
i <- enquo(i)
dataset%>%
dplyr::summarise(t1=mean(!!i),
t2=sd(!!i))
}
fun(dataset, age)
注意:最好将数据对象和参数传递给函数
推荐阅读
- java - 从 Spring Batch 中的 Service 方法中读取值
- jquery - 在焦点上更改引导工具提示 css
- node.js - 将消息发送到特定的客户端套接字(从 NodeJS 服务器到 Java 客户端)
- sql - 获取用户考勤进入和退出一行SQL Server
- python - 根据关键字比较 2 个或多个字典中的键并在行/列中显示值
- c++ - 将 int 转换为 char 然后推回向量
- python - Youtube 视频下载器
- javascript - Ant Design Vue:当只有一个 div 内容时,轮播箭头消失
- rust - 将基本 rust 程序链接到子文件夹中的 rlib
- oauth - 如何使用 oauth.tools 获取 Google Web 应用程序的令牌?