问题标签 [non-standard-evaluation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1296 浏览

r - ggplot中函数内aes(...)中变量的范围

考虑一下ggplot(...)函数内部的这种使用。

看起来ggplot无法识别i函数内部定义的变量,但可以识别i它是否在全局环境中定义。这是为什么?

请注意,这给出了预期的结果。

0 投票
2 回答
1121 浏览

r - R函数来安装丢失的包

对于我的一个脚本,我想编写一个 R 函数来检查一个包是否已经安装:如果是这样,它应该使用 library() 将它导入命名空间,否则它应该安装并导入它。

我假设pkgname是一个字符串,并尝试编写如下内容:

如此简单,此功能不起作用。如果我尝试像ensure_library("dplyr")安装包 dplyr 一样运行它,但它会失败,因为它尝试导入pkgname而不是dplyr在命名空间中。

另外,如果我现在重新运行它,它将dplyr再次安装。

我意识到这可能是由于 R 非标准评估,我尝试了几种 eval/substitute/quote 的组合以使其工作,require但我无法成功。

有人可以帮助我了解发生了什么以及是否有一些简单的解决方法吗?

如果一个已经实现它的函数存在,我想知道,但我真正感兴趣的是理解为什么我的代码不能按预期工作。

0 投票
1 回答
3217 浏览

r - 使用 dplyr 和 purrr 反复变异变量

我是 R 自学的,这是我的第一个 StackOverflow 问题。如果这是一个明显的问题,我深表歉意;请善待。

我的问题的简短版本
我编写了一个自定义函数来计算变量逐年变化的百分比。我想使用purrr'smap_at函数将我的自定义函数应用于变量名向量。我的自定义函数在应用于单个变量时有效,但在我使用链接时失败map_a

我的自定义函数

当我将此函数应用于 mtcars 数据集中的单个变量时,输出与预期的一样(尽管显然结果的含义是无意义的)。

尝试使用 Purrr 将函数应用于字符向量

我认为我在概念化 map_at 如何将参数传递给函数时遇到了麻烦。我可以在网上找到的所有示例片段都将 map_at 与类似的函数一起使用is.character,不需要额外的参数。这是我尝试使用purrr.

这给了我这个错误信息

粘贴错误(“d”,col,sep =“”):缺少参数“col”,没有默认值

我认为这是因为 map_at 作为 传递varsdf而不是传递参数col。为了解决这个问题,我尝试了以下方法:

这向我抛出了这个错误:

我玩弄了一堆不同的版本,包括df从函数中删除参数calculate_delta,但我没有运气。

其他潜在的解决方案

1) 这个版本使用sapply, 而不是purrr. 我已经尝试过以这种方式解决问题并且遇到了类似的问题。如果可能的话,我的目标是找出一种使用 purrr 的方法。根据我对 的理解purrr,这似乎是一个典型的用例。

2)我显然可以想到如何使用 for 循环来实现这一点,但是出于类似的原因,如果可能的话,我会尽量避免这种情况。

显然我在想这个错误。请帮忙!

编辑 1

为了澄清,我很好奇是否有一种重复转换变量的方法可以完成两件事。

1) 在原始变量中生成新变量,tbl_df而不替换替换正在变异的列(如使用dplyr's 时的情况mutate_at)。

2) 自动生成新的变量标签。

3) 如果可能,通过使用map_at.

这可能是不可能的,但我觉得应该有一种优雅的方式来完成我所描述的。

0 投票
1 回答
8744 浏览

r - 获取 R 函数的参数名称

对于任意函数

我希望能够采用参数名称f

这可能吗?

0 投票
2 回答
164 浏览

r - R 将 RSelenium 驱动程序环境作为函数参数传递

我可能没有看到明显的东西,无论如何我想创建函数来自动从远程驱动程序已经处理的 url 中提取文本。我想将 xpath 表达式和可以找到远程驱动程序的环境作为函数参数传递

此函数的可能调用可能是fun.XpathExtractText("//*",env) 但在调用构建部分后不久出现错误消息:

但是如果我直接在 env 中执行从错误消息中提取的调用,它将起作用。

我尝试将环境也作为环境传递 remdir 本身,因为它是一个环境,但这根本不算数,函数在调用构建后卡在同一点。我不知道什么?

0 投票
1 回答
65 浏览

r - parse(eval(...), envir = custom) 中的嵌套函数

我有一个自定义的 R 环境

函数b()按预期运行。

但是a(1)会抛出错误。

我怎么eval(parse(text = "a(1)"), envir = e)去上班?

0 投票
0 回答
50 浏览

r - R中环境变量的NSE

问题是关于验证环境的存在,如果没有找到,要么创建环境,要么返回因任何原因传递的变量名。本质上,这是我在一系列无监督函数中使用的一个函数,用于确定对象的分配路径,以及响应从外部函数返回的观察变量而返回的函数等。

我的功能适用于我测试过的所有密集用途,但我知道我忘记了一些非常基本的东西,这使得完全不需要使用变通方法。

问题是代表环境名称的 x 变量需要被接受为带引号的字符串或不带引号的字符串。我在很多函数中都使用了这种方法,但由于某种原因,我发现将相同的系统应用到这个系统时会出现很多错误。这是我的例子......请有人告诉我我忘记或找不到的可笑的简单方法,这让我觉得它很荒谬。

为简洁起见,这里是我到目前为止运行的测试:

使用基本包数据的用例示例

还想指出我在类似情况下使用 deparse(substitute (...)) / eval (parse (text = ...)) 但由于某种原因我无法让它与环境设置一起运行......

0 投票
1 回答
1223 浏览

r - R dplyr - 在变异/摘要中获取变量名作为字符串

我一直在尝试提取传递给 dplyr::mutate() 中的函数的变量的名称,但没有成功。下面是一个简短的示例,我想创建一个在 mutate 中返回字符串“mpg”的函数:

我使用了lazyeval::expr_find(),因为就我对文档的理解而言,替换只“上升”了一层。当我在函数 wrap() 中调用 f() 时它可以工作,但是当我将它放在 group_by()%>%mutate() 中时它返回 mpg 的内容,而不是名称“mpg”

我发现了一些相关的问题,但没有一个能解决我的问题。

非常感谢任何帮助:)

0 投票
1 回答
2971 浏览

r - 条件变异的 SE 问题

我正在尝试用 mutate 做一个简单的条件。

代码应基于来自同一数据帧的两个变量创建一个名为“性别”的新变量。

我收到以下错误,我不明白。我想这与SE有关。但是我仍然对R不太熟悉。

mutate_impl(.data, dots) 中的错误:
缺少参数“.data”,没有默认值

如果我使用单个 mutate 语句运行代码,我不会遇到任何问题。

0 投票
1 回答
64 浏览

r - 尝试将 nlmrt 对象转换为 nls 对象时我在这里做错了什么

我正在尝试使用将"nlmrt对象转换为"nls"对象nls2。但是,只有在调用中明确写入参数的名称时,我才能做到这一点。我不能以编程方式定义参数名称吗?请参阅可重现的示例:

这有效:

但是,这迫使我在调用中对参数名称进行硬编码nls2。由于与我的实际代码相关的原因,我希望能够做类似的事情

但这会返回一个错误:

是否可以解决这个问题,而不必在调用中明确地硬编码参数的名称nls2