对于R中的lm()
之类的函数,您将“ data”参数传递给该函数(通常是一个数据帧),然后R通过名称知道所有列,而不是引用它们。因此,区别在于x=column
而不是x=df$column
形式的引用。那么如何在自己的用户定义函数中使用相同的方法?
一个简单的例子:
library(tidyverse)
df <- tibble(x=1:100,y=x*(1+rnorm(n=100)))
test_corr <- function(x,y) {
cor(x,y) %>% return()
}
# Right now I would do this
test_corr(df$x,df$y)
# I want to be able to do this
test_corr(data=df, x, y)
答案 0 :(得分:2)
由于您正在使用tidyverse
函数,因此对于这种类型的任务使用整洁的评估是有意义的。为此功能,您可以
test_corr <- function(data, x, y) {
quo( cor({{x}}, {{y}}) ) %>%
rlang::eval_tidy(data=data)
}
test_corr(df, x, y)
首先,我们保证要构建要求值的表达式,然后使用{{ }}
(拥抱)语法将传递给函数的变量名插入表达式中。然后,我们在您为eval_tidy
提供的data.frame的上下文中评估该安全性。
您可能还对tidyselect封装插图感兴趣,其中讨论了更多选项。
答案 1 :(得分:0)
您可以使用var connectionString = new ConnectionString(Configuration.GetConnectionString("DefaultConnection"));
services.AddHealthChecks().AddNpgSql(connectionString.Value);
reformulate