Descomposición QR diferente en lm y biglm?

Estoy tratando de recuperar la matriz R de la descomposición QR utilizada en biglm. Para esto estoy usando una parte del código en vcov.biglm y lo puse en una función como esta:

qr.R.biglm <- function (object, ...) {
    # Return the qr.R matrix from a biglm object
    object$qr <- .Call("singcheckQR", object$qr)
    p <- length(object$qr$D)
    R <- diag(p)
    R[row(R) > col(R)] <- object$qr$rbar
    R <- t(R)
    R <- sqrt(object$qr$D) * R
    dimnames(R) <- list(object$names, object$names)
    return(R)
}

Más específicamente, estoy tratando de obtener el mismo resultado que utilizando qr.R del paquete base, que se usa en las descomposiciones QR de la clase "qr", como las contenidas en la clase lm (lm $ qr). El código para la función base es el siguiente:

qr.R <- function (qr, complete = FALSE) {
    if (!is.qr(qr)) 
        stop("argument is not a QR decomposition")
    R <- qr$qr
    if (!complete) 
        R <- R[seq.int(min(dim(R))), , drop = FALSE]
    R[row(R) > col(R)] <- 0
    R
}

Logro obtener el mismo resultado para una regresión de muestra, excepto por los signos.

x <- as.data.frame(matrix(rnorm(100 * 10), 100, 10))
y <- seq.int(1, 100)
fit.lm <- lm("y ~ .", data =  cbind(y, x))
R.lm <- qr.R(fit.lm$qr)

library(biglm)
fmla <- as.formula(paste("y ~ ", paste(colnames(x), collapse = "+")))
fit.biglm <- biglm(fmla, data = cbind(y, x))
R.biglm <- qr.R.biglm(fit.biglm)

Comparando ambos, está claro que los valores absolutos coinciden, pero no los signos.

mean(abs(R.lm) - abs(R.biglm) < 1e-6)
[1] 1
mean(R.lm - R.biglm < 1e-6)
[1] 0.9338843

No puedo entender por qué esto es. Me gustaría poder obtener el mismo resultado para la matriz R como lm de biglm.