我试图获得只包含.
作为标点符号或根本没有标点符号的所有函数名称的矢量。我只想使用ls()
函数。ls()中的模式参数可以颠倒吗?
ls()
需要被定义为
可选正则表达式
pattern
参数。只返回名称匹配模式。glob2rx
可用于将通配符模式转换为正则表达式。
我想反转我的正则表达式。但我也想保留包含.
的函数。以下是我不想要的一些例子。
lsBase1 <- ls("package:base", pattern = "[[:punct:]]")
head(lsBase1)
# [1] "^" "~" "<" "<<-" "<=" "<-"
我想这倒版本,如果我在grep
使用invert = TRUE
,或通过执行以下操作。 但是我还希望只包含.
的函数包含标点符号。
lsBase2 <- ls("package:base")
lsBase2 <- lsBase[!grepl("[[:punct:]]", lsBase)]
head(lsBase2)
# [1] "abbreviate" "abs" "acos" "acosh"
# [5] "addNA" "addTaskCallback"
有没有办法来反转在ls()
的pattern
说法?或者,更一般地说,我可以反转正则表达式[[:punct:]]
,以便返回相反的结果,但包含那些仅包含.
作为标点符号的匹配项?
注意:超过一个.
是好的。
我想要的另一个例子是:我想要is.vector
但我不想要[.data.frame
。
在大多数的功能在'包:base','.'表示该函数是一个S3方法。这是你的标点符号吗? – mnel 2014-09-23 03:38:07
是的,那也可以。但我真的希望尽可能少地做到这一点。'ls()'只有在真正有可能的情况下 – 2014-09-23 03:41:08
使用源代码。如果指定'pattern','ls'基本上只调用'grep'。所以你可以简单地做到这一点,并且像你想要的那样指定'invert = TRUE'。 – 2014-09-23 03:41:11