Cómo modificar objetos no exportados en un paquete

Mi paquete (llamémoslo A) depende de otro paquete B. Necesito modificar una funciónf en B que tiene un error que hace que mi paquete falle. El problema es esef Es una función no exportada.

Sif fue exportado, podría usar la técnica descrita enesta publicación a R-help:

Las pocas veces que quiero parchear una función como esta, uso:

unlockBinding(name, env);
assignInNamespace(name, value, ns=pkgName, envir=env);
assign(name, value, envir=env);
lockBinding(name, env);

Pero porquef no se exporta, esto no funciona.

Ejemplo simple para ilustrar el problema:

# rf is an exported function from the stats package; this works
foo <- function(x) x
unlockBinding("rf", as.environment("package:stats"))
assignInNamespace("rf", foo, ns="stats", pos="package:stats")
assign("rf", bar, pos="package:stats")
lockBinding("rf", as.environment("package:stats"))

rf(42)
# 42    


# C_rf is an unexported object that rf() uses; this fails
bar <- function(x) x + 1
unlockBinding("C_rf", as.environment("package:stats"))
assignInNamespace("C_rf", bar, ns="stats", pos="package:stats")
assign("C_rf", bar, pos="package:stats")
lockBinding("C_rf", as.environment("package:stats"))

# Error in unlockBinding("C_rf", as.environment("package:stats")) : 
#   no binding for "C_rf"

¿Es posible modificarf?

Respuestas a la pregunta(1)

Su respuesta a la pregunta