Nothing
matrix64 = function(x, nrow=1L, ncol=1L, byrow=FALSE, dimnames=NULL) {
matrix(as.integer64(x), nrow=nrow, ncol=ncol, byrow=byrow, dimnames=dimnames)
}
array64 = function(x, dim) {
array(as.integer64(x), dim=dim)
}
# Test that 'expr' gives the same result whether
# the input is integer or integer64, in the sense
# of equivalence after casting between the types.
# expr gets integer names converted to integer64,
# retaining attributes (esp. for arrays), and
# we test that the result of evaluating expr
# is equivalent (after converting back to integer)
# Starting with integer and casting to integer64
# guarantees representation, where casting integer64
# to integer might have to stipulate inputs must be
# representable as integer.
expect_int_32_64_equivalent = function(expr) {
# Capture the unevaluated expression
esub = substitute(expr)
evar = all.vars(esub)
# replace all integer values in expr with integer64 equivalents
# in a tailored environment
parent_ = parent.frame()
int64_env = new.env(parent = parent_)
for (key in evar) {
val = get(key, parent_)
if (!is.integer(val)) next
assign(key, as.integer64(val), envir=int64_env)
attributes(int64_env[[key]]) = attributes(val)
}
int_result = eval(expr, parent_)
int64_result = eval(expr, int64_env)
int64_result_as_int = methods::as(int64_result, typeof(int_result))
# ignore class (which includes integer64)
a64 = attributes(int64_result)
for (a in setdiff(names(a64), "class"))
attr(int64_result_as_int, a) = a64[[a]]
expect_identical(int64_result_as_int, int_result)
}
expect_same_error = function(expr1, expr2) {
err1 = tryCatch(expr1, error=identity)
if (!inherits(err1, "error")) return(fail("'expr1' did not produce an error"))
err2 = tryCatch(expr2, error=identity)
if (!inherits(err2, "error")) return(fail("'expr2' did not produce an error"))
msg1 = conditionMessage(err1)
msg2 = conditionMessage(err2)
if (msg1 == msg2) return(pass())
fail(sprintf("Error messages differ.\n'expr1' failed as %s\n'expr2' failed as %s", msg1, msg2))
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.