Learn R Programming

editrules (version 2.7.2)

editarray: Parse textual, categorical edit rules to an editarray

Description

An editarray is a boolean array (with some extra attributes) where each row contains an edit restriction on purely categorical data.

Usage

editarray(editrules, sep = ":", env = parent.frame())

  ## S3 method for class 'editarray':
as.character (x, useIf = TRUE,
    datamodel = TRUE, ...)

  ## S3 method for class 'editarray':
as.data.frame (x, ...)

  ## S3 method for class 'editarray':
as.expression (x, ...)

  ## S3 method for class 'editarray':
as.matrix (x, ...)

  ## S3 method for class 'editarray':
c (...)

  ## S3 method for class 'editarray':
str (object, ...)

  ## S3 method for class 'editarray':
summary (object, useBlocks = TRUE,
    ...)

Arguments

editrules
character or expression vector.
sep
textual separator, to be used internally for separating variable from category names.
env
environment to evaluate the rhs of '==' or '%in%' in.
x
editarray object
useIf
logical. Use if( ) or ! | ?
datamodel
logical. Include datamodel explicitly?
...
further arguments passed to or from other methods
object
an R object
useBlocks
logical Summarize each block?

Value

  • editarray : An object of class editarray as.data.frame: data.frame with columns 'name', 'edit' and 'description'. as.matrix: The boolean matrix part of the editarray.

Details

The function editarray converts (a vector of) edit(s) in character or expression from to an editarray object. Edits may also be read from a data.frame, in which case it must have at least a character column with the name edit. It is not strictly necessary, but hightly recommended that the datamodel (i.e. the possible levels for a variable) is included explicitly in the edits using an %in% statement, as shown in the examples below. The function editfile can read categorical edits from a free-form text file.

See Also

editrules.plotting, violatedEdits, localizeErrors, editfile, editset, editmatrix, getVars, blocks, eliminate, substValue, isFeasible generateEdits, contains, is.editarray, isSubset

Examples

Run this code
# Here is the prototypical categorical edit: men cannot be pregnant.
E <- editarray(expression(
    gender %in% c('male','female'),
    pregnant %in% c('yes','no'),
    if( gender == 'male' ) pregnant == 'no'
    )
)
E

# an editarray has a summary method:
summary(E)

# A yes/no variable may also be modeled as a logical:
editarray(expression(
    gender %in% c('male','female'),
    pregnant %in% c(TRUE, FALSE),
    if( gender == 'male' ) pregnant == FALSE
    )
)

# or, shorter (and using a character vector as input): 
editarray(c(
    "gender \%in\% c('male','female')",
    "pregnant \%in\% c(TRUE, FALSE)",
    "if( gender == 'male' ) !pregnant"
    )
)

# the \\\%in\\\% statement may be used at will
editarray(expression(
    gender %in% c('male','female'),
    pregnant %in% c(TRUE, FALSE),
    positionInHousehold %in% c('marriage partner', 'child', 'other'),
    maritalStatus %in% c('unmarried','married','widowed','divorced'),
    if( gender == 'male' ) !pregnant,
    if( maritalStatus %in% c('unmarried','widowed','divorced')) !positionInHousehold %in% c('marriage partner','child')
    )
)





# Here is the prototypical categorical edit: men cannot be pregnant.
E <- editarray(expression(
    gender %in% c('male','female'),
    pregnant %in% c('yes','no'),
    if( gender == 'male' ) pregnant == 'no'
    )
)
E

# an editarray has a summary method:
summary(E)

# A yes/no variable may also be modeled as a logical:
editarray(expression(
    gender %in% c('male','female'),
    pregnant %in% c(TRUE, FALSE),
    if( gender == 'male' ) pregnant == FALSE
    )
)

# or, shorter (and using a character vector as input): 
editarray(c(
    "gender \%in\% c('male','female')",
    "pregnant \%in\% c(TRUE, FALSE)",
    "if( gender == 'male' ) !pregnant"
    )
)

# the \\\%in\\\% statement may be used at will
editarray(expression(
    gender %in% c('male','female'),
    pregnant %in% c(TRUE, FALSE),
    positionInHousehold %in% c('marriage partner', 'child', 'other'),
    maritalStatus %in% c('unmarried','married','widowed','divorced'),
    if( gender == 'male' ) !pregnant,
    if( maritalStatus %in% c('unmarried','widowed','divorced')) !positionInHousehold %in% c('marriage partner','child')
    )
)

Run the code above in your browser using DataLab