Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何找到定义函数的文件?_R - Fatal编程技术网

R 如何找到定义函数的文件?

R 如何找到定义函数的文件?,r,R,问题的标题几乎说明了一切 给出的解决方案并不总是有效的。例如: > class(facet_grid) [1] "function" > attr(facet_grid, "srcref") NULL > attributes(facet_grid) NULL 加载函数后,environment()-函数将返回函数“所在”的包 > environment(facet_grid) <environment: namespace:ggplot2> >环境(方面

问题的标题几乎说明了一切

给出的解决方案并不总是有效的。例如:

> class(facet_grid)
[1] "function"
> attr(facet_grid, "srcref")
NULL
> attributes(facet_grid)
NULL
加载函数后,environment()-函数将返回函数“所在”的包

> environment(facet_grid)
<environment: namespace:ggplot2>
>环境(方面网格)
从CRAN(或github)下载ggplot2_version_whatever.tag.gz并展开后,您可以(使用系统文本搜索工具)找到一个名为facet grid.r的文件,该文件的定义从第125行开始:

facet_grid <- function(facets, margins = FALSE, scales = "fixed", space = "fixed", shrink = TRUE, labeller = "label_value", as.table = TRUE, switch = NULL, drop = TRUE) {

facet\u grid我不清楚如何从
environment
返回的值到定义函数的文件路径。使用
.libPaths()
查找软件包的位置。我知道我的软件包安装在哪里。我仍然找不到在哪里定义了
facet\u grid
。@kjo您需要搜索包源代码。R不知道或不关心函数的源代码是在哪个文件中定义的。如果需要ggplot2函数的源代码,则需要转到CRAN获取tar.gz文件。大多数人安装二进制软件包而不是源代码安装:Google search很快就会生成这样的结果:不是我的否决票,但一般来说,你无法直接确定函数定义在哪个文件中,尤其是因为函数不需要在文件中定义(您可以直接在控制台中定义它)。在另一个答案中实现这一点的唯一原因是调用
source('some/file.R')
提供了
source
创建类
srcref
对象(即文件路径)所需的信息。即使您能够缩小提供函数的包的范围,也不能保证
some\u function
是在名为
some\u function.R
的文件中定义的,因此您很可能需要grep for
"一些函数请在问题中指出您为什么需要这些信息。a.如果您只需要函数的源代码,只需在控制台中键入不带括号的名称,例如
facet\u grid
。b如果您确实需要软件包中某个函数的实际源代码,您可以使用来搜索和查找。或者只需在谷歌上搜索它,就可以了可能找到原始回购协议。