我試圖獲得只包含.
作爲標點符號或根本沒有標點符號的所有函數名稱的矢量。我只想使用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