# parsing line-by-line
txt <- readLines(textConnection('x <- rnorm(100)
runif(10)
warning("You should check out rapport package!")
plot(1:10)
qplot(rating, data = movies, geom = "histogram")
y <- round(runif(100))
cor.test(x, y)
crl <- cor.test(runif(10), runif(10))
table(mtcars$am, mtcars$cyl)
ggplot(mtcars) + geom_point(aes(x = hp, y = mpg))'))
evals(txt)
## parsing a list of commands
txt <- list('df <- mtcars',
c('plot(mtcars$hp, pch = 19)','text(mtcars$hp, label = rownames(mtcars), pos = 4)'),
'ggplot(mtcars) + geom_point(aes(x = hp, y = mpg))')
evals(txt)
## returning only a few classes
txt <- readLines(textConnection('rnorm(100)
list(x = 10:1, y = "Godzilla!")
c(1,2,3)
matrix(0,3,5)'))
evals(txt, classes = 'numeric')
evals(txt, classes = c('numeric', 'list'))
## handling warnings
evals('chisq.test(mtcars$gear, mtcars$hp)')
evals(list(c('chisq.test(mtcars$gear, mtcars$am)', 'pi', 'chisq.test(mtcars$gear, mtcars$hp)')))
evals(c('chisq.test(mtcars$gear, mtcars$am)', 'pi', 'chisq.test(mtcars$gear, mtcars$hp)'))
## handling errors
evals('runiff(20)')
evals('Old MacDonald had a farm\\dots')
evals('## Some comment')
evals(list(c('runiff(20)', 'Old MacDonald had a farm?')))
evals(c('mean(1:10)', 'no.R.function()'))
evals(list(c('mean(1:10)', 'no.R.function()')))
evals(c('no.R.object', 'no.R.function()', 'very.mixed.up(stuff)'))
evals(list(c('no.R.object', 'no.R.function()', 'very.mixed.up(stuff)')))
evals(c('no.R.object', 'Old MacDonald had a farm\\dots', 'pi'))
evals(list(c('no.R.object', 'Old MacDonald had a farm\\dots', 'pi')))
## graph options
evals('plot(1:10)')
evals('plot(1:10)', graph.output = 'jpg')
evals('plot(1:10)', height = 800)
evals('plot(1:10)', height = 800, hi.res = T)
evals('plot(1:10)', graph.output = 'pdf', hi.res = T)
evals('plot(1:10)', res = 30)
evals('plot(1:10)', graph.name = 'myplot')
evals(list('plot(1:10)', 'plot(2:20)'), graph.name = 'myplots-%INDEX')
evals('plot(1:10)', graph.env = TRUE)
evals(list(c('x <- runif(100)', 'plot(x)')), graph.env = TRUE)
evals(c('plot(1:10)', 'plot(2:20)'), graph.env = TRUE)
evals(list(c('x <- runif(100)', 'plot(x)'), c('y <- runif(100)', 'plot(y)')), graph.env = TRUE)
evals('plot(1:10)', graph.recordplot = TRUE)
evals('histogram(mtcars$hp)', graph.recordplot = TRUE)
evals(list(c('x <- runif(100)', 'plot(x)')), graph.recordplot = TRUE)
evals(c('plot(1:10)', 'plot(2:20)'), graph.recordplot = TRUE)
evals('plot(10:100)', graph.output = 'pdf')
evals('runif(10)', graph.output = 'pdf')
## hooks
hooks <- list('numeric' = round, 'matrix' = ascii)
evals(txt, hooks = hooks)
evals('22/7', hooks = list('numeric' = rp.round))
evals('matrix(runif(25), 5, 5)', hooks = list('matrix' = rp.round))
## using rapport's default hook
evals('22/7', hooks = TRUE)
## setting default hook
evals(c('runif(10)', 'matrix(runif(9), 3, 3)'), hooks = list('default'=round))
## round all values except for matrices
evals(c('runif(10)', 'matrix(runif(9), 3, 3)'), hooks = list(matrix = 'print', 'default' = round))
# advanced hooks
fun <- function(x, asciiformat) paste(capture.output(print(ascii(x), asciiformat)), collapse = '\n')
hooks <- list('numeric' = list(round, 2), 'matrix' = list(fun, "rest"))
evals(txt, hooks = hooks)
# return only returned values
evals(txt, output = 'output')
# return only messages (for checking syntax errors etc.)
evals(txt, output = 'msg')
# check the length of returned values
evals('runif(10)', length = 5)
# note the following will not be filtered!
evals('matrix(1,1,1)', length = 1)
# if you do not want to let such things be eval-ed in the middle of a string use it with other filters :)
evals('matrix(1,1,1)', length = 1, classes = 'numeric')
# hooks & filtering
evals('matrix(5,5,5)', hooks = list('matrix' = ascii), output = 'output')
# eval-ing chunks in given environment
myenv <- new.env()
evals('x <- c(0,10)', env = myenv)
evals('mean(x)', env = myenv)
rm(myenv)
# note: if you had not specified 'myenv', the second 'evals' would have failed
evals('x <- c(0,10)')
evals('mean(x)')
Run the code above in your browser using DataLab