Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
与UNIX中的'ls-l | grep'命令类似,在R中使用grep缩小ls()返回的结果的范围是否可行?_R_Pipe - Fatal编程技术网

与UNIX中的'ls-l | grep'命令类似,在R中使用grep缩小ls()返回的结果的范围是否可行?

与UNIX中的'ls-l | grep'命令类似,在R中使用grep缩小ls()返回的结果的范围是否可行?,r,pipe,R,Pipe,在Terminal/shell脚本中,您可以使用ls-l列出当前目录中的所有文件,然后通过管道将其执行一个附加命令。例如,ls-l | grep-i“calc”返回其文件名包括calc的所有文件。在R中,可以使用ls()命令列出当前存储在工作区中的所有对象 但是,我想使用类似R中的grep功能缩小由ls()返回的列表,其中输入是由ls()返回的列表,输出是由grep(或其他什么)缩小的列表,很像我上面提到的UNIX管道功能。在R做这件事可行吗 此外,在R中通过类似于xargs的功能缩小列表范围是

在Terminal/shell脚本中,您可以使用
ls-l
列出当前目录中的所有文件,然后通过管道将其执行一个附加命令。例如,
ls-l | grep-i“calc”
返回其文件名包括
calc
的所有文件。在R中,可以使用
ls()
命令列出当前存储在工作区中的所有对象

但是,我想使用类似R中的grep功能缩小由
ls()
返回的列表,其中输入是由
ls()
返回的列表,输出是由grep(或其他什么)缩小的列表,很像我上面提到的UNIX管道功能。在R做这件事可行吗

此外,在R中通过类似于
xargs
的功能缩小列表范围是否可行?因此,我只想获取文本中包含
if
的对象,因此,如果
ls()
返回的列表中的函数包含if-else条件,我希望在控制台中显示该函数。您可以在终端中使用
find.|xargs grep“if”
(当然,这些是当前目录中的文件,不是工作区中的R对象,但我只是为了说明的目的而展示了它)

请注意,这篇文章不是关于如何从R中调用shell命令的。这不是我想要做的

我使用OS X 10.9.3和R 3.1.0。

ls()
有一个
模式
参数,可能就是您需要的:

pattern    an optional regular expression. Only names matching pattern 
           are returned. glob2rx can be used to convert wildcard patterns 
           to regular expressions.
对于问题的第二部分,可以使用
capture.output(getAnywhere())
grep
查看函数源代码内部。您需要将函数传递给它,我将使整个操作成为保持实现干净的函数。

您可以这样做

grep("calc",list.files(),value=TRUE)

哪个应该“模拟”
ls-l | grep-i“计算”
。请参见
?列出.files
grep

您在问什么
R
具有
grep
命令。编译后的函数中不会包含文本字符串
if
。您想做什么?R有其解析和过滤文本的方法。也许你应该花点时间来学习做事情的方法,而不是尝试应用一些效率不高的东西。谢谢。像xargs这样的操作怎么样?我不确定这是我想要的
getAnywhere(“if”)
只返回内置的
if
函数,但我想在其中获取所有使用
if
的对象。对。您必须获取
ls()
调用的输出,然后在
getAnywhere()调用中使用这些名称。调用
capture.output()
使函数行
grep
-able,那么,您应该能够将所有这些都封装在一个函数中,该函数接受要查找的字符串的参数。太棒了!感谢您的澄清。@agstudy:我完全同意一个
list.files()
示例。然而,OP似乎很喜欢学习R中的
grep()