我不是R用户,但我正在尝试在我管理的各种计算机上生成一些基准信息,以告知即将进行的购买。
我在命令行(版本3.2.3)上使用R,并在R中键入以下内容,但这不会在R中生成任何结果。请注意,rbenchmark软件包已经安装。
任何建议或想法将不胜感激!谢谢!
> source("rbenchmark_ex.R")
Loading required package: rbenchmark
>
rbenchmark_ex.R 文件:
require('rbenchmark')
benchmark(1:10^6)
# Example 1 ------
# Benchmarking the allocation of one 10^6-element numeric vector,
# by default replicated 100 times
benchmark(1:10^6)
# simple test functions used in subsequent examples
random.array = function(rows, cols, dist=rnorm)
array(dist(rows*cols), c(rows, cols))
random.replicate = function(rows, cols, dist=rnorm)
replicate(cols, dist(rows))
# Example 2 ----------
# Benchmarking an expression multiple times with the same replication count,
# output with selected columns only
benchmark(replications=rep(100, 3),
random.array(100, 100),
random.array(100, 100),
columns=c('test', 'elapsed', 'replications'))
# Example 3 ---------
# Benchmarking two named expressions with three different replication
# counts, output sorted by test name and replication count,
# with additional column added after the benchmark
within(benchmark(rep=random.replicate(100, 100),
arr=random.array(100, 100),
replications=10^(1:3),
columns=c('test', 'replications', 'elapsed'),
order=c('test', 'replications')),
{ average = elapsed/replications })
# Example 4
# Benchmarking a list of arbitrary predefined expressions
tests = list(rep=expression(random.replicate(100, 100)),
arr=expression(random.array(100, 100)))
do.call(benchmark,
c(tests, list(replications=100,
columns=c('test', 'elapsed', 'replications'),
order='elapsed')))
答案 0 :(得分:1)
如果您提供文件,则默认情况下不会打印任何内容。有几种方法可以解决这个问题,具体取决于你想要什么。
如果要强制只打印一些内容,可以将它们包装在print()
命令中。例如:
print(benchmark(1:10^6))
如果要打印所有内容,则还可以为source()
函数提供更多参数。有三种有用的可能性:
source("rbenchmark_ex.R", echo = TRUE)
:这回应了评估的代码,在每行代码后打印结果。基本上,这看起来好像是要从脚本中键入每一行到控制台并对其进行评估。
source("rbenchmark_ex.R", print.eval = TRUE)
:这只会打印结果,但不会回显源代码。
source("rbenchmark_ex.R", echo = TRUE, print.eval = FALSE)
:这只会回显代码,但不会打印结果。 (可能没那么有用......)
也许您宁愿将输出放在文件中。这可以通过使用sink()
(在评论中42-建议)来完成。只需将以下行添加到您的脚本中,之后的所有输出都将写入文件:
sink("output.txt")
然后,您可以使用上述选项指定R控制台中的脚本,以指定所需的输出类型。
您也可以直接从命令行执行此操作,而无需先启动R控制台。例如:
Rscript -e 'source("rbenchmark_ex.R", echo = TRUE)'
如果您在脚本中使用了>
,这会将输出写入控制台(当然,您可以将其重定向到sink()
)或文件。你也可以直接运行
Rscript rbenchmark_ex.R
但这只会打印结果而不会回显代码。