drop {base} | R Documentation |

## Drop Redundant Extent Information

### Description

Delete the dimensions of an array which have only one level.

### Usage

```
drop(x)
```

### Arguments

`x` |
an array (including a matrix). |

### Value

If `x`

is an object with a `dim`

attribute (e.g., a matrix
or `array`

), then `drop`

returns an object like
`x`

, but with any extents of length one removed. Any
accompanying `dimnames`

attribute is adjusted and returned with
`x`

: if the result is a vector the `names`

are taken from
the `dimnames`

(if any). However, if the result is a vector
of length one, then it does not get `names`

*unless* exactly
one component of the `dimnames`

is non-`NULL`

, in which case
that component is used.

Array subsetting (`[`

) performs this reduction unless used
with `drop = FALSE`

, but sometimes it is useful to invoke
`drop`

directly.

### See Also

`drop1`

which is used for dropping terms in models, and
`droplevels`

used for dropping unused levels from a `factor`

.

### Examples

```
dim(drop(array(1:12, dim = c(1,3,1,1,2,1,2)))) # = 3 2 2
drop(1:3 %*% 2:4) # scalar product - w/o drop(.), would return 1x1 matrix
# Behavior when result is length-1 vector:
(x <- x1 <- x2 <- array(0, c(1L, 1L), list("a", "b")))
colnames(x1) <- rownames(x2) <- NULL
names(drop(x )) # NULL
names(drop(x1)) # "a"
names(drop(x2)) # "b"
```

*base*version 4.4.1 Index]