No soy un usuario de R, pero estoy tratando de generar información de referencia en varias computadoras que administro para informar una próxima compra.
Estoy usando R en la línea de comandos (versión 3.2.3) y escribo lo siguiente dentro de R, pero esto no genera ningún resultado dentro de R. Tenga en cuenta que el paquete rbenchmark ya se ha instalado.
¡Cualquier sugerencia o idea será muy apreciada! ¡Gracias!
> source("rbenchmark_ex.R") Loading required package: rbenchmark >El archivo 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')))Si obtiene un archivo, no se imprime nada de manera predeterminada. Hay varios enfoques para resolver esto, dependiendo de lo que quieras exactamente.
Si desea forzar que solo se impriman algunas cosas, puede envolverlas en el comando print() . Ejemplo:
print(benchmark(1:10^6)) Si desea imprimir todo, también puede proporcionar más argumentos a la función source() . Hay tres posibilidades útiles:
source("rbenchmark_ex.R", echo = TRUE) : Esto repite el código que se evalúa e imprime el resultado después de cada línea de código. Básicamente, parece que escribiría cada línea del script en la consola y la evaluaría.
source("rbenchmark_ex.R", print.eval = TRUE) : Esto solo imprime el resultado, pero no refleja el código fuente.
source("rbenchmark_ex.R", echo = TRUE, print.eval = FALSE) : Esto solo repite el código, pero no imprime los resultados. (quizás no tan útil...)
Tal vez prefiera tener los resultados en un archivo. Esto se puede hacer usando sink() (como lo sugiere 42- en su comentario). Simplemente agregue la siguiente línea a su secuencia de comandos y toda la salida que viene después se escribirá en el archivo:
sink("output.txt")A continuación, puede obtener el script en la consola de R y seguir utilizando las opciones descritas anteriormente para especificar qué tipo de salida desea.
También puede hacerlo directamente desde la línea de comandos sin tener que iniciar primero la consola R. Por ejemplo:
Rscript -e 'source("rbenchmark_ex.R", echo = TRUE)' Esto escribirá el resultado en la consola (desde donde puede, por supuesto, redirigirlo con > ) o en un archivo, si ha usado sink() en el script. También puede ejecutar directamente
Rscript rbenchmark_ex.Rpero esto solo imprimirá el resultado y no repetirá el código.