1

example如果我手动输入字符串名称,我真的不明白为什么在使用ls函数时的行为会有所不同。考虑下面的函数:

> ls("package:LIM")[1]
[1] "FILERigaAutumn"

如果我这样运行示例:

> example(ls("package:LIM")[1])
Warning message:
In example(ls("package:LIM")[1]) : no help found for ‘ls("package:LIM")[1]’

它似乎没有执行这个例子。但是当我直接运行它时:

> example("FILERigaAutumn")

我得到了很多输出并执行了示例。

传递的参数类型似乎是相同的:

> typeof("FILERigaAutumn")
[1] "character"
> typeof( ls("package:LIM")[1])
[1] "character"

有谁知道为什么?我想计算一个包中所有示例的运行时间:

for (func in ls("package:LIM")){system.time(example(func))}
4

1 回答 1

2

library, requireexample也许还有一些其他函数可以带引号和不带引号使用:

example(runif)

example("runif")

为了允许不带引号的版本,这些函数通过调用将第一个参数转换为字符(不计算它):

deparse(subsitute(x))

导致:

deparse(substitute(ls("package:LIM")[1]))
# [1] "ls(\"package:LIM\")[1]"

为了规避这一点(评估论点),您必须使用character.only论点。

example(ls("package:LIM")[1], character.only=TRUE)

恕我直言,这种行为不是很一致(character.only=TRUE应该是默认行为),我看不到任何优势(好的,您可以在未引用的版本中使用制表符补全)。

于 2013-06-30T14:11:40.370 回答