【发布时间】:2019-01-07 20:54:33
【问题描述】:
我有一个大型数据集,我正在尝试在其中搜索关键字。以交互方式执行此操作,我一直在使用 grep 一样:
fee <- grep("fi", fo$fum)
View(fi$fum[fee, ])
这对我的目的来说足够好,但它有很多重复的输入。我想我可以通过编写一个函数来加快这个过程:
giant_search <- function(x, y) {
y <- grep(quote(x), fo$fum)
return(y)
View(fo$fum[y, ])
}
但是,当我使用此函数时,y 不返回任何值(因此,当然,View 也不显示任何内容)。但是,如果我在函数之外编写完全相同的代码,它将完全按照我想要/期望的方式工作。
我认为问题在于 R 如何处理函数中的函数参数或字符串,但我不知道如何解决该问题。
【问题讨论】:
-
不需要
quote(x),因为grep需要一个字符串参数。return之后的任何内容都将被忽略,因此将return移动到函数的末尾。最后,如果您将在函数内部使用y,则无需将其作为参数传递。 -
您究竟是如何调用
giant_search()函数的?如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。 -
Flick 先生,我称它为
giant_search(giant_name)。在下面运行 A. Suliman 的解决方案,我意识到我的部分问题是参数没有作为字符串传递给函数(即我应该改为使用giant_search(x='giant_name'))。
标签: r function functional-programming grepl