tidyselect包提供了一个选择帮助函数where
。where
用于使用自定义函数选择数据帧列。它是tidyselect的内部函数。这意味着where
不会加载到您的命名空间中,您只能通过tidyselect::: where
调用它。
然而,我从dplyr vignettes中看到了以下示例:列操作。
starwars %>%
summarise(across(where(is.character), ~ length(unique(.x))))
#> # A tibble: 1 x 8
#> name hair_color skin_color eye_color sex gender homeworld species
#> <int> <int> <int> <int> <int> <int> <int> <int>
#> 1 87 13 31 15 5 3 49 38
在本例中,其中
不带前缀“tidyselect:::”,但很明显,代码中没有错误,它会产生有意义的结果。这对我来说很奇怪。我想知道为什么代码能正常工作。
我猜是因为“代码引用”,这是tidyeval方法论的一部分。粗略地说,代码引用将代码作为表达式挂起,然后在“内部环境”中对表达式求值。这只是一个直观的猜测,我不知道如何测试。
我希望有人能帮助我解决“where”问题,或者为我留下一些关于代码如何工作的参考。
您没有说明在您的示例中附加了哪些包,但让我们假设唯一附加的包是 dplyr
。
library(dplyr)
首先,我们注意到函数,其中
未附加,即当前R会话未知。我们只需在控制台中键入其名称(不带括号)即可进行检查。如果附加了函数,我们现在可以看到它的源代码。相反,我们得到一个错误,即未找到所在的对象。
但是,我们注意到
dplyr
从整洁选择
附加了其他功能,starts_with
就是一个例子。如果我们重复在控制台中键入名称的实验,我们现在会看到源代码,并且函数源自 tidyselect
命名空间:
> starts_with
function (match, ignore.case = TRUE, vars = NULL)
{
check_match(match)
vars <- vars %||% peek_vars(fn = "starts_with")
if (ignore.case) {
vars <- tolower(vars)
match <- tolower(match)
}
flat_map_int(match, starts_with_impl, vars)
}
<bytecode: 0x0000027338e5f8e8>
<environment: namespace:tidyselect>
在这种情况下,函数
starts_with
由dplyr使用NAMESPACE
文件附加,您可以在其中列出应该与您的包一起附加的其他包中的函数。您可以签入dplyr
源代码。
但
。在这个函数中,列规范被引用(第174、175行),然后发送到函数tidyselect::eval_select(第177行)。然后,此函数是tidyselect包的一部分,可以访问中的
并不像我们已经看到的那样可用。在这种情况下,函数确实被引用,并且只在tidyselect包中进行评估。如果查看across的源代码,您会注意到在第82行中,列规范被传递给同一文件中定义的函数across_setupwhere
。
简介 Laravel 包含各种各样的全局「辅助」PHP 函数,框架本身也大量地使用了这些功能;如果你觉得方便,你可以在你的应用中自由的使用它们。 可用方法 数组 & 对象 array_add array_collapse array_divide array_dot array_except array_first array_flatten array_forget array_get arra
列标字符转化 获取扩展版本 查看作者信息
辅助函数,顾名思义,是帮助我们完成特定任务的函数。每个辅助函数文件仅仅是一些函数的集合。例如,URL Helpers 可以帮助我们创建链接,Form Helpers 可以帮助我们创建表单,Text Helpers 提供一系列的格式化输出方式,Cookie Helpers 能帮助我们设置和读取COOKIE, File Helpers 能帮助我们处理文件,等等。 跟其他部分不同的是,辅助函数不是用类的
辅助函数,顾名思义,是帮助我们完成特定任务的函数。每个辅助函数文件都是某一类 函数的集合。例如, URL 辅助函数 帮助我们创建链接,表单辅助函数**帮助 我们创建表单元素,**本文辅助函数 帮助我们处理文本的格式化,Cookie 辅助函数 帮助我们读取或设置 Cookie ,文件辅助函数 帮助我们处理文件,等等等等。 不同于 CodeIgniter 中的大多数系统,辅助函数没有使用面向对象的方式
存放位置 Laravel 提供了很多 辅助函数,有时候我们也需要创建自己的辅助函数。 必须 把所有的『自定义辅助函数』存放于 app 文件夹中。 并在 composer.json 文件中加载,方法请见: Laravel 的自定义函数 helpers.php 文件存放位置
xml辅助函数文件包含了一些辅助处理xml数据的函数 加载该辅助函数 本辅助函数通过如下代码加载:$this->load->helper('xml'); 可用函数如下: xml_convert('string') 以一个字符串(string)作为输入并且转换下列xml保留字符成为实体(entities): 连字号: & 小于和大于号: 单引号和双引号: ' " 破折号: - 该函数将忽略 & 如果