raw {base} | R Documentation

## Raw Vectors

### Description

Creates or tests for objects of type `"raw"`.

### Usage

    raw(length = 0)
    as.raw(x)
    is.raw(x)

### Arguments

`length` | desired length.
`x` | object to be coerced.

### Details

The raw type is intended to hold raw bytes. It is possible to extract subsequences of bytes, and to replace elements (but only by elements of a raw vector). The relational operators (see Comparison, using the numerical order of the byte representation) work, as do the logical operators (see Logic) with a bitwise interpretation.

A raw vector is printed with each byte separately represented as a pair of hex digits. If you want to see a character representation (with escape sequences for non-printing characters) use `rawToChar`.

Coercion to raw treats the input values as representing small (decimal) integers, so the input is first coerced to integer, and then values which are outside the range `[0 ... 255]` or are `NA` are set to `0` (the `nul` byte).

`as.raw` and `is.raw` are primitive functions.

### Value

`raw` creates a raw vector of the specified length. Each element of the vector is equal to `0`. Raw vectors are used to store fixed-length sequences of bytes.

`as.raw` attempts to coerce its argument to be of raw type. The (elementwise) answer will be `0` unless the coercion succeeds (or if the original value successfully coerces to 0).

`is.raw` returns true if and only if `typeof(x) == "raw"`.

### See Also

`charToRaw`, `rawShift`, etc.

`&` for bitwise operations on raw vectors.

### Examples

    xx <- raw(2)
    xx[1] <- as.raw(40)     # NB, not just 40.
    xx[2] <- charToRaw("A")
    xx       ## 28 41   -- raw prints hexadecimals
    dput(xx) ## as.raw(c(0x28, 0x41))
    as.integer(xx) ## 40 65

    x <- "A test string"
    (y <- charToRaw(x))
    is.vector(y) # TRUE
    rawToChar(y)
    is.raw(x)
    is.raw(y)
    stopifnot( charToRaw("\xa3") == as.raw(0xa3) )

    isASCII <-  function(txt) all(charToRaw(txt) <= as.raw(127))
    isASCII(x)  # true
    isASCII("\xa325.63") # false (in Latin-1, this is an amount in UK pounds)

[Package base version 3.4.2 Index]