get_val {lazy.tools} R Documentation

## Get Values from an Array

### Description

Get Values from an Array

### Usage

```get_val(A, i = NULL, j = NULL, k = NULL, l = NULL, subs = NULL)

put_val(A, i = NULL, j = NULL, k = NULL, l = NULL, subs = NULL) <- value
```

### Arguments

 `A` An array object `i` Vector consisting of the subscripts for the 1st dimension `j` Vector consisting of the subscripts for the 2nd dimension `k` Vector consisting of the subscripts for the 3rd dimension `l` Vector consisting of the subscripts for the 4th dimension `subs` string specifying the subscripts such as "1:2, , 4, 2:2" or a numeric vector consisting of the scalar subscript for each dim. `value` The value to be assigned.

### Details

It is assumed that `A` is an array.
When `A` is a list of data frames, use `get_valL` instead.
When numeric `subs` is given it must be a vector of length `length(dim(A))` specifying a scalar element of `A`.

`get_val(A,i,j,k,l)` returns `A[i,j,k,l]`.
`put_val(A,i,j,k,l) <- value` puts the value at `A[i,j,k,l]`.
Therefore, when `A` is an array, better use `A[i,j,k,l]`.

`get_val(A,i,j,k,l)` is equivalent to `get_val(A,subs=subs)`
where `subs` contains the values of `i,j,k,l` as a string.
For example,
`get_val(A, 1:2, , 3)` is equivalent to `get_val(A, subs="1:2, , 3")`.

Use `subs=` when the # of dimensions is more than 5.

`subs=` has priority over `i,j,k,l`.

The result will be simplified to a matrix or vector if possible.

### Value

`get_val(A, i,j.,k,l)` returns `A[i,j,k,l]`.
`put_val(A, i,j,k,l) <- value` replaces `A[i,j,k,l]` with `value`.

### Examples

```# set up an array B
dims=c(5,4,3,2)
B <- array(0,dims)
B[,,,1] <- demomat(5,4,3)*10+1
B[,,,2] <- demomat(5,4,3)*10+2
dimnames(B) <-
mapply( function(x,y){paste(x,1:y,sep="")}, letters[1:length(dims)],dims)

# get B[5,4,3,2]
res1=get_val(B,5,4,3,2)
res2=get_val(B,subs=c(5,4,3,2))
res3=get_val(B,subs="5,4,3,2")
Print(res1,res2,res3)

# get B[2,,3,]:  cannot use numeric subs here.
res1=get_val(B,2,,3)
res3=get_val(B,subs="2,,3,")
Print(res1, res3 )

# modify B[,1,2:3,1]
( temp <- B[,1,2:3,1] )
put_val(B,,1,2:3,1) <- -9999
B[,1,2:3,1]
put_val(B,subs=",1,2:3,1") <- temp
B[,1,2:3,1]
put_val(B,subs=c(1,1,1,2)) <- -9999
B[1,1,1,2]

```

[Package lazy.tools version 0.1.3 Index]