我想查找當前工作區中的所有功能,並考慮使用is.function
來達到此目的。查找當前工作區中的所有功能
「問題」是is.function
期望一個真正ř對象,而不是字符串名稱的對象的。
這是我的解決方案,但使用eval(substitute(...))
似乎有點涉及。任何更直接的方式的想法還是唯一的辦法可以做到這一點?
示例內容
x <- TRUE
y <- 10
foo1 <- function() message("hello world!")
foo2 <- function() message("hello world again!")
找到所有的函數對象
wscontent <- ls(all.names=TRUE)
funs <- sapply(wscontent, function(ii) {
eval(substitute(is.function(OBJ), list(OBJ=as.name(ii))))
})
> funs
foo1 foo2 funs wscontent x y
TRUE TRUE FALSE FALSE FALSE FALSE
用於指向'lsf.str()'的指針+1,之前不知道那個!這一個似乎讓我完全得到我以後的一句話:'funs < - as.character(lsf.str())'。非常感謝! – Rappster
@Rappster,根據你想要對結果做什麼,使用'as.character'可能不是必需的,因爲'lsf.str'基本上返回一個函數名的字符向量。只是該對象是類'ls_str',爲此它有一個'print'方法。 – BenBarnes
太好了,謝謝你的評論。 – Rappster