Skip to content
Prev 302827 / 398503 Next

Advice: How to best ensure column values match in different vectors?

On Wed, Aug 8, 2012 at 10:58 AM, DG Christensen <dgc at enservio.com> wrote:
Hi DG,

You can define your own class which errors out when accessing names
which don't exist:

E.g.,

as.strictvec <- function(x){
    stopifnot(is.atomic(x))
    class(x) <- c("strictvec", class(x))
     x
}

`[<-.strictvec` <- function(x, i, j, value){
     stopifnot(j %in% colnames(x))
     NextMethod()
}

z <- matrix(1:3, ncol = 3); colnames(z) <- letters[1:3]

z.strict <- as.strictvec(z)

z[, "d"] <- 5
z.strict[, "d"] <- 5 # Error!

Adapt as needed.

Cheers,
Michael