readex.gdsn {gdsfmt} | R Documentation

## Read data field of a GDS node with a selection

### Description

Get data from a GDS node with subset selection.

### Usage

    readex.gdsn(node, sel=NULL, simplify=c("auto", "none", "force"),
        .useraw=FALSE, .value=NULL, .substitute=NULL, .sparse=TRUE)

### Arguments

`node` | an object of class `gdsn.class`, a GDS node
`sel` | a list of `m` logical vectors, where `m` is the number of dimensions of `node` and each logical vector should have the same size of dimension in `node`
`simplify` | if `"auto"`, the result is collapsed to be a vector if possible; `"force"`, the result is forced to be a vector
`.useraw` | use R RAW storage mode if integers can be stored in a byte, to reduce memory usage
`.value` | a vector of values to be replaced in the original data array, or NULL for nothing
`.substitute` | a vector of values after replacing, or NULL for nothing; `length(.substitute)` should be one or `length(.value)`; if `length(.substitute)` = `length(.value)`, it is a mapping from `.value` to `.substitute`
`.sparse` | only applicable for the sparse array nodes, if `TRUE` and it is a vector or matrix, return a `Matrix::dgCMatrix` object

### Details

If `sel` is a list of numeric vectors, the internal method converts the numeric vectors to logical vectors first, extract data with logical vectors, and then call `[` to reorder or expend data.

### Value

Return an array.

### Author(s)

Xiuwen Zheng

### References

http://github.com/zhengxwen/gdsfmt

### See Also

`read.gdsn`, `append.gdsn`, `write.gdsn`, `add.gdsn`

### Examples

    # cteate a GDS file
    f <- createfn.gds("test.gds")

    add.gdsn(f, "vector", 1:128)
    add.gdsn(f, "matrix", matrix(as.character(1:(10*6)), nrow=10))
    f

    # read vector
    readex.gdsn(index.gdsn(f, "vector"), sel=rep(c(TRUE, FALSE), 64))
    readex.gdsn(index.gdsn(f, "vector"), sel=c(4:8, 1, 2, 12))
    readex.gdsn(index.gdsn(f, "vector"), sel=-1:-10)

    readex.gdsn(index.gdsn(f, "vector"), sel=c(4, 1, 10, NA, 12, NA))
    readex.gdsn(index.gdsn(f, "vector"), sel=c(4, 1, 10, NA, 12, NA),
        .value=c(NA, 1, 12), .substitute=c(6, 7, NA))

    # read matrix
    readex.gdsn(index.gdsn(f, "matrix"))
    readex.gdsn(index.gdsn(f, "matrix"),
        sel=list(rep(c(TRUE, FALSE), 5), rep(c(TRUE, FALSE), 3)))
    readex.gdsn(index.gdsn(f, "matrix"), sel=list(NULL, c(1,3,6)))
    readex.gdsn(index.gdsn(f, "matrix"),
        sel=list(rep(c(TRUE, FALSE), 5), c(1,3,6)))
    readex.gdsn(index.gdsn(f, "matrix"), sel=list(c(1,3,6,10), c(1,3,6)))
    readex.gdsn(index.gdsn(f, "matrix"), sel=list(c(-1,-3), -6))

    readex.gdsn(index.gdsn(f, "matrix"), sel=list(c(1,3,NA,10), c(1,3,NA,5)))
    readex.gdsn(index.gdsn(f, "matrix"), sel=list(c(1,3,NA,10), c(1,3,NA,5)),
        simplify="force")

    readex.gdsn(index.gdsn(f, "matrix"), sel=list(c(1,3,NA,10), c(1,3,NA,5)))
    readex.gdsn(index.gdsn(f, "matrix"), sel=list(c(1,3,NA,10), c(1,3,NA,5)),
        .value=NA, .substitute="X")

    # close the GDS file
    closefn.gds(f)

    # delete the temporary file
    unlink("test.gds", force=TRUE)

[Package gdsfmt version 1.26.1 Index]