【发布时间】:2011-05-22 19:46:15
【问题描述】:
显然我不明白 grep 在 R 中的工作方式。如果我在我的 OS X 终端上使用 grep,我可以使用参数 -o 使 grep 只返回匹配的部分。在 R 中,我找不到如何做相应的事情。阅读手册,我认为 values 是正确的方法,因为它返回字符而不是索引,但仍然返回整个字符串,因此更好。
# some string fasdjlk465öfsdj123
# R
test <- fasdjlk465öfsdj123
grep("[0-9]",test,value=TRUE) # returns "fasdjlk465öfsdj123"
# shell
grep -o '[0-9]' fasdjlk465öfsdj123
# returns 4 6 5 1 2 3
我在 R 中缺少什么参数?
编辑:Joris Meys 的建议非常接近我想要做的。我得到一个向量作为 readLines 的结果。我想检查向量的每个元素是否有数字并返回这些数字。我真的很惊讶没有标准的解决方案。我想使用一些适用于字符串的正则表达式函数并返回匹配项,如 grep -o ,然后在该向量上使用 lapply 。 grep.custom 是最接近的——我会努力让它为我工作。
【问题讨论】:
-
嗯,调用一些 shell grep 不是更容易吗?我该怎么做?
-
@ran2 : 更正了我的名字 :-)
-
哎呀,对不起先生!下次你帮助我时,我会仔细检查我是否至少写对了你的名字;)
-
@ran2 :更新了我对向量的回答。或者,如果你想使用 shell grep,你可以查看
?sys。在这里运行windows,所以没有机会尝试,但我相信你会自己弄明白。 -
... 应该是 ?system 以防其他人感兴趣