如何将反勾号应用于原始名称的向量

  • 本文关键字:原始 向量 应用于
  • 更新时间 :
  • 英文 :


是否有方法将反引号应用于.Primitive函数名称的向量,以便它可以安全地传递给is.primitive ?

目前我用get(x)代替is.primitive(x)中的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")

函数式编程的帮助值得一读

(?Map/?Filter)

这给出了如何使用Filter执行此类分析的示例。

你可以这样写

Filter(is.primitive, sapply(ls(baseenv()), get, baseenv()))

另一种选择是使用match.fun来搜索函数

match.fun('$')

没有必要乱搞` !

最新更新