7得票1回答
函数内部的lm()调用权重不正确地评估。

我正在编写一个需要加权回归的函数。使用weights参数时,我一直收到错误提示。我已经创建了一个最小可重现示例,您可以在此处找到: wt_reg <- function(form, data, wts) { lm(formula = as.formula(form), data =...

33得票1回答
获取R函数的参数名称

对于任意一个函数f <- function(x, y = 3){ z <- x + y z^2 } 我希望能够获取f的参数名称。> argument_names(f) [1] "x" "y" 这是否可能?

8得票3回答
为什么 `substitute` 命令在多行工作,但单行无效?

我试图回答这个很好的问题,它涉及创建一个非标准的评估函数以对数据表对象进行分组汇总。Akrun提供了一个很棒的答案,我在此简化如下: akrun <- function(data, var, group){ var <- substitute(var) group <-...

7得票1回答
如何在一个包中使用rlang运算符?

我正在编写一个使用tidyverse函数的软件包,也就是使用非标准评估的函数,比如dplyr::filter: setMethod("filter_by_id", signature(x = "studies", id = "character"), ...

12得票4回答
“在顶层无法使用 `!!!`”是什么意思,如何解决? (注意:这是一个提问标题,不需要回答问题。)

我正在尝试创建一个使用ggplot2创建棒棒糖图的函数。我想将所有参数传递到geom_point()中的aes()中,但是我想从传递到geom_segment()中的aes()中排除size参数(如果您查看下面a()的输出,很明显为什么)。因此,我使用rlang::enquos()捕获...,...

7得票1回答
在ggplot中函数内的aes(...)变量范围问题

考虑在函数内部使用ggplot(...)的情况。 x <- seq(1,10,by=0.1) df <- data.frame(x,y1=x, y2=cos(2*x)/(1+x)) library(ggplot2) gg.fun <- function(){ i=2...

20得票2回答
非标准评估的危险在哪里,如果有的话,是否有记录?

许多具有非标准评估的R函数,例如with,subset和transform,包含以下警告: 对于交互式使用,这非常有效且易于阅读。但是,在编程中,即在一个人的函数中,需要更加小心,通常应避免使用with(),因为数据中的变量可能会意外覆盖局部变量,请参见参考文献。(引用自with的文档,其他...

17得票1回答
deparse(substitute())通常返回函数名,但在for循环内调用时返回函数代码

在一个非常具体的情况下,R语言的行为让我有些惊讶。假设我定义了一个函数square,它返回其参数的平方,就像这样:square <- function(x) { return(x^2) } 我希望在另一个函数内调用此函数,并且在这样做时还要显示其名称。 我可以使用deparse(subs...

29得票1回答
确定一个函数是否具有标准评估

有没有编程方式可以判断给定的r函数是否具有标准评估,如果不是,哪个组成部分的函数评估 - 解析、匹配、作用域、承诺形成、承诺实现、返回等 - 是非标准的?我知道闭包可能是标准的,原始函数可能是非标准的,但两者都有例外。我的问题是如何确定函数语义在这些方面是否符合标准,而不是函数机制是否符合标准...

7得票1回答
在dplyr::summarize()函数中设置向量属性会产生什么影响?

我最近遇到了一些奇怪的 dplyr 行为,其中 summarize 会不停地引用上一个组中的对象。 这里有一个简单的可重现示例来说明这种令人惊讶的行为: library(dplyr, warn.conflicts = FALSE) tibble(x = rep(letters[1:3], ...