R: Match the feature set of a dfm to given feature names

dfm_match {quanteda} | R Documentation

## Match the feature set of a dfm to given feature names

### Description

Match the feature set of a dfm to a specified vector of feature names. For existing features in `x` for which there is an exact match for an element of `features`, these will be included. Any features in `x` not `features` will be discarded, and any feature names specified in `features` but not found in `x` will be added with all zero counts.

### Usage

    dfm_match(x, features)

### Arguments

`x` | a dfm
`features` | character; the feature names to be matched in the output dfm

### Details

Selecting on another dfm's `featnames()` is useful when you have trained a model on one dfm, and need to project this onto a test set whose features must be identical. It is also used in `bootstrap_dfm()`.

### Value

A dfm whose features are identical to those specified in `features`.

### Note

Unlike `dfm_select()`, this function will add feature names not already present in `x`. It also provides only fixed, case-sensitive matches. For more flexible feature selection, see `dfm_select()`.

### See Also

`dfm_select()`

### Examples

    # matching a dfm to a feature vector
    dfm_match(dfm(""), letters[1:5])
    dfm_match(data_dfm_lbgexample, c("A", "B", "Z"))
    dfm_match(data_dfm_lbgexample, c("B", "newfeat1", "A", "newfeat2"))

    # matching one dfm to another
    txt <- c("This is text one", "The second text", "This is text three")
    (dfmat1 <- dfm(tokens(txt[1:2])))
    (dfmat2 <- dfm(tokens(txt[2:3])))
    (dfmat3 <- dfm_match(dfmat1, featnames(dfmat2)))
    setequal(featnames(dfmat2), featnames(dfmat3))

[Package quanteda version 3.1.0 Index]