5

在 R 中,您可以将函数的源代码视为函数只是另一个对象。

我正在寻找一种方法来搜索此源代码,而不知道保存源的文件。

例如,我可能想知道函数是否shapiro.test包含该函数sort(确实如此)。

如果shapiro.test是字符串或字符串向量,我会使用

grep('sort', shapiro.test)

但作为shapiro.test一个函数,这会给出错误“as.character(x) 中的错误:无法将类型‘闭包’强制转换为‘字符’类型的向量”。

我没有运气尝试将函数强制为字符串。另外,我不希望在编译基本函数时能够搜索它们。

4

2 回答 2

8

这里使用的解决方案deparse

> grep ("sort", deparse(shapiro.test))
[1] 5
于 2013-10-24T11:11:03.293 回答
3

您可以将函数包装在 中capture.output,这会将每一行转换为字符向量中的一个元素。

> grep("sort",capture.output(shapiro.test))
[1] 5 

或者您可以调用edit(shapiro.test)并使用指定的文本编辑器options(editor=)来搜索该函数。

于 2013-10-24T11:08:03.213 回答