有没有办法将倒计时应用于.Primitive函数名的向量,以便能够安全地传递给is.primitive?
目前,我在get(x)中使用x作为is.primitive(x)。这些第一批电话,
> is.primitive(`$`)
#[1] TRUE
> is.primitive(get("$"))
#[1] TRUE才是对的。接下来所有的电话都打不通。
> is.primitive("$")
#[1] FALSE
## which is a bit confusing considering the argument name in
> `$`
#.Primitive("$")
##----
## other tries ...
> is.primitive($)
#Error: unexpected '$' in "is.primitive($"
> is.primitive("`$`")
#[1] FALSE
> is.primitive(`"$"`)
#Error in is.primitive(`"$"`) : object '"$"' not found
> sQuote("$")
#[1] "‘$’"
> is.primitive(sQuote("$"))
#[1] FALSE
> as.name("$") ## most promising! ...
#`$`
> is.primitive(as.name("$")) ## ...but no
#[1] FALSE我之所以这样做,是因为我想使用以下方法对package:base中的对象执行一些分析
Vis.primitive <- Vectorize(is.primitive)我将要使用的向量x是
x <- ls("package:base")发布于 2014-08-04 03:16:45
阅读函数式编程的帮助是值得的。
(?Map/?Filter)
这给出了如何使用Filter来执行此类分析的示例。
你可以做这样的事
Filter(is.primitive, sapply(ls(baseenv()), get, baseenv()))
另一种选择是使用match.fun搜索函数。
例如
match.fun('$')
没有必要和`混在一起!
https://stackoverflow.com/questions/25111230
复制相似问题