gtools (version 3.5.0)

unByteCode: Convert a Byte-Code Function to an Interpreted-Code Function

Description

Convert a byte-code function to an interpreted-code function

Usage

unByteCode(fun) assignEdgewise(name, env, value) unByteCodeAssign(fun)

Arguments

fun
function to be modified
name
object name
env
namespace
value
new function body

Value

All three functions return a copy of the modified function or assigned value.

Details

The purpose of these functions is to allow a byte coded function to be converted back into a fully interpreted function as a temporary work around for issues in byte-code interpretation.

unByteCode returns a copy of the function that is directly interpreted from text rather than from byte-code.

assignEdgewise makes an assignment into a locked environemnt.

unByteCodeAssign changes the specified function in its source environment to be directly interpreted from text rather than from byte-code.

References

These functions were inspired as a work-around to R bug https://bugs.r-project.org/bugzilla/show_bug.cgi?id=15215.

See Also

disassemble, assign

Examples

Run this code
datURL <- "https://bugs.r-project.org/bugzilla/attachment.cgi?id=1659"
dat <- as.matrix(read.csv(file=datURL, row.names=1))
dist2 <- function(x) as.dist(1-cor(t(x), method="pearson"))
hclust1 <- function(x) hclust(x, method = "single")

distance <- dist2(dat)
cluster  <- hclust1(distance)

dend <- as.dendrogram(cluster)

## Not run: 
#     ## In R 2.3.0 and earlier crashes R: with a node stack overflow error
#     plot(dend)
#     ## Error in xy.coords(x, y, recycle = TRUE) : node stack overflow
# ## End(Not run)

## convert stats:::plotNode from byte-code to interpreted-code
unByteCodeAssign(stats:::plotNode)

# increase recursion limit
options("expressions"=5e4)

# now the function does not crash
plot(dend)

Run the code above in your browser using DataCamp Workspace