<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macCatalyst: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 8.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "TabularData",
  "identifier" : "/documentation/TabularData/DiscontiguousColumnSlice",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "TabularData"
    ],
    "preciseIdentifier" : "s:11TabularData24DiscontiguousColumnSliceV"
  },
  "title" : "DiscontiguousColumnSlice"
}
-->

# DiscontiguousColumnSlice

A collection that represents a selection, potentially with gaps, of elements from a typed column.

```
struct DiscontiguousColumnSlice<WrappedElement>
```

## Overview

A column slice contains only certain elements from its parent column.
Create a slice by selecting certain elements.
For example, use [`filter(_:)`](/documentation/TabularData/DiscontiguousColumnSlice/filter(_:)) to create a slice that only includes elements with even values.

```swift
let slice = column.filter({ $0.isMultiple(of: 2) })
```

## Topics

### Creating a Column Slice

[`init(Column<WrappedElement>)`](/documentation/TabularData/DiscontiguousColumnSlice/init(_:))

Creates a slice with the contents of a column.

[`init(column: Column<WrappedElement>, ranges: [Range<Int>])`](/documentation/TabularData/DiscontiguousColumnSlice/init(column:ranges:))

Creates a slice with the contents of a column.

### Creating a Slice of Unique Elements

[`func distinct() -> DiscontiguousColumnSlice<WrappedElement>`](/documentation/TabularData/DiscontiguousColumnSlice/distinct())

Generates a discontiguous slice that contains unique elements.

### Creating a Type-Erased Slice

[`func eraseToAnyColumn() -> AnyColumnSlice`](/documentation/TabularData/DiscontiguousColumnSlice/eraseToAnyColumn())

Generates a type-erased copy of the column slice.

### Creating a Column of the Same Type

[`var prototype: any AnyColumnPrototype`](/documentation/TabularData/DiscontiguousColumnSlice/prototype)

A prototype that creates type-erased columns with the same underlying type as the column slice.

### Creating Transformed Columns

[`func map<T>((DiscontiguousColumnSlice<WrappedElement>.Element) throws -> T?) rethrows -> Column<T>`](/documentation/TabularData/DiscontiguousColumnSlice/map(_:))

Creates a new column by applying a transformation to each element.

### Inspecting a Column Slice

[`var name: String`](/documentation/TabularData/DiscontiguousColumnSlice/name)

The name of the slice’s parent column.

[`var count: Int`](/documentation/TabularData/DiscontiguousColumnSlice/count)

The number of elements in the column slice.

[`var wrappedElementType: any Any.Type`](/documentation/TabularData/DiscontiguousColumnSlice/wrappedElementType)

The underlying type of the column’s elements.

[`func argmin() -> Int?`](/documentation/TabularData/DiscontiguousColumnSlice/argmin())

Returns the index of the element with the lowest value, ignoring missing elements.

[`func argmax() -> Int?`](/documentation/TabularData/DiscontiguousColumnSlice/argmax())

Returns the index of the element with the highest value, ignoring missing elements.

[`func isNil(at: Int) -> Bool`](/documentation/TabularData/DiscontiguousColumnSlice/isNil(at:))

Returns a Boolean that indicates whether the element at the index is missing.

### Accessing Elements

[`subscript(Int) -> DiscontiguousColumnSlice<WrappedElement>.Element`](/documentation/TabularData/DiscontiguousColumnSlice/subscript(_:)-9y37v)

Accesses an element at an index.

[`subscript(Range<Int>) -> DiscontiguousColumnSlice<WrappedElement>`](/documentation/TabularData/DiscontiguousColumnSlice/subscript(_:)-8rd2f)

Accesses a contiguous range of elements.

[`subscript<R>(R) -> DiscontiguousColumnSlice<WrappedElement>`](/documentation/TabularData/DiscontiguousColumnSlice/subscript(_:)-4k2lh)

Accesses a contiguous range of elements with a range expression.

[`subscript(UnboundedRange) -> DiscontiguousColumnSlice<WrappedElement>`](/documentation/TabularData/DiscontiguousColumnSlice/subscript(_:)-5xvit)

Accesses a contiguous range of elements with an unbounded range.

### Summarizing a Column Slice

[`func summary() -> CategoricalSummary<WrappedElement>`](/documentation/TabularData/DiscontiguousColumnSlice/summary())

Generates a categorical summary of the column slice’s elements.

[`func numericSummary() -> NumericSummary<Double>`](/documentation/TabularData/DiscontiguousColumnSlice/numericSummary()-3r7pn)

Generates a numeric summary of the integer column slice’s elements.

[`func numericSummary() -> NumericSummary<WrappedElement>`](/documentation/TabularData/DiscontiguousColumnSlice/numericSummary()-4b7m0)

Generates a numeric summary of the floating-point column slice’s elements.

### Getting Statistical Values

[`func sum() -> WrappedElement`](/documentation/TabularData/DiscontiguousColumnSlice/sum())

Returns the sum of the column slice’s elements, ignoring missing elements.

[`func min() -> DiscontiguousColumnSlice<WrappedElement>.Element`](/documentation/TabularData/DiscontiguousColumnSlice/min())

Returns the element with the lowest value, ignoring missing elements.

[`func max() -> DiscontiguousColumnSlice<WrappedElement>.Element`](/documentation/TabularData/DiscontiguousColumnSlice/max())

Returns the element with the highest value, ignoring missing elements.

[`func mean() -> DiscontiguousColumnSlice<WrappedElement>.Element`](/documentation/TabularData/DiscontiguousColumnSlice/mean()-3y11c)

Returns the mean average of the floating-point slice’s elements, ignoring missing elements.

[`func mean() -> Double?`](/documentation/TabularData/DiscontiguousColumnSlice/mean()-49u93)

Returns the mean average of the integer slice’s elements, ignoring missing elements.

[`func standardDeviation(deltaDegreesOfFreedom: Int) -> Double?`](/documentation/TabularData/DiscontiguousColumnSlice/standardDeviation(deltaDegreesOfFreedom:)-36nx2)

Returns the standard deviation of the integer column slice’s elements, ignoring missing elements.

[`func standardDeviation(deltaDegreesOfFreedom: Int) -> DiscontiguousColumnSlice<WrappedElement>.Element`](/documentation/TabularData/DiscontiguousColumnSlice/standardDeviation(deltaDegreesOfFreedom:)-5vd4r)

Returns the standard deviation of the floating-point column slice’s elements, ignoring missing elements.

### Describing a Column Slice

[`var description: String`](/documentation/TabularData/DiscontiguousColumnSlice/description)

A text representation of the column slice.

[`var debugDescription: String`](/documentation/TabularData/DiscontiguousColumnSlice/debugDescription)

A text representation of the column slice suitable for debugging.

[`var customMirror: Mirror`](/documentation/TabularData/DiscontiguousColumnSlice/customMirror)

A mirror that reflects the column slice.

### Comparing Two Column Slices

[`static func == (DiscontiguousColumnSlice<WrappedElement>, DiscontiguousColumnSlice<WrappedElement>) -> Bool`](/documentation/TabularData/DiscontiguousColumnSlice/==(_:_:))

Returns a Boolean that indicates whether the column slices are equal.

### Modifying a Column Slice with a Value

[`static func += (inout DiscontiguousColumnSlice<WrappedElement>, WrappedElement)`](/documentation/TabularData/DiscontiguousColumnSlice/+=(_:_:)-1mzz0)

Modifies a column slice by adding a value to each element.

[`static func -= (inout DiscontiguousColumnSlice<WrappedElement>, WrappedElement)`](/documentation/TabularData/DiscontiguousColumnSlice/-=(_:_:)-2yrui)

Modifies a column slice by subtracting a value from each element.

[`static func *= (inout DiscontiguousColumnSlice<WrappedElement>, WrappedElement)`](/documentation/TabularData/DiscontiguousColumnSlice/*=(_:_:)-7gcqc)

Modifies a column slice by multiplying each element by a value.

[`static func /= (inout DiscontiguousColumnSlice<WrappedElement>, WrappedElement)`](/documentation/TabularData/DiscontiguousColumnSlice/_=(_:_:)-1g0yb)

Modifies an integer column slice by dividing each element by a value.

[`static func /= (inout DiscontiguousColumnSlice<WrappedElement>, WrappedElement)`](/documentation/TabularData/DiscontiguousColumnSlice/_=(_:_:)-6i7hx)

Modifies a floating-point column slice by dividing each element by a value.

### Modifying a Column Slice with a Collection of Values

[`static func += <C>(inout DiscontiguousColumnSlice<WrappedElement>, C)`](/documentation/TabularData/DiscontiguousColumnSlice/+=(_:_:)-2jxz1)

Modifies a column slice by adding each value in a collection to
the corresponding element in the column.

[`static func += <C>(inout DiscontiguousColumnSlice<WrappedElement>, C)`](/documentation/TabularData/DiscontiguousColumnSlice/+=(_:_:)-lpai)

Modifies a column slice by adding each optional value in a collection to
the corresponding element in the column.

[`static func -= <C>(inout DiscontiguousColumnSlice<WrappedElement>, C)`](/documentation/TabularData/DiscontiguousColumnSlice/-=(_:_:)-9nkq6)

Modifies a column slice by subtracting each value in a collection from
the corresponding element in the column.

[`static func -= <C>(inout DiscontiguousColumnSlice<WrappedElement>, C)`](/documentation/TabularData/DiscontiguousColumnSlice/-=(_:_:)-8a20q)

Modifies a column slice by subtracting each optional value in a collection from
the corresponding element in the column.

[`static func *= <C>(inout DiscontiguousColumnSlice<WrappedElement>, C)`](/documentation/TabularData/DiscontiguousColumnSlice/*=(_:_:)-9jg9h)

Modifies a column slice by multiplying each element in the column by
the corresponding value in a collection.

[`static func *= <C>(inout DiscontiguousColumnSlice<WrappedElement>, C)`](/documentation/TabularData/DiscontiguousColumnSlice/*=(_:_:)-18nlr)

Modifies a column slice by multiplying each element in the column by
the corresponding optional value in a collection.

[`static func /= <C>(inout DiscontiguousColumnSlice<WrappedElement>, C)`](/documentation/TabularData/DiscontiguousColumnSlice/_=(_:_:)-6xf9s)

Modifies an integer column slice by dividing each element in the column by
the corresponding value in a collection.

[`static func /= <C>(inout DiscontiguousColumnSlice<WrappedElement>, C)`](/documentation/TabularData/DiscontiguousColumnSlice/_=(_:_:)-1mzcg)

Modifies an integer column slice by dividing each element in the column by
the corresponding optional value in a collection.

[`static func /= <C>(inout DiscontiguousColumnSlice<WrappedElement>, C)`](/documentation/TabularData/DiscontiguousColumnSlice/_=(_:_:)-39wsi)

Modifies a floating-point column slice by dividing each element in the column by
the corresponding value in a collection.

[`static func /= <C>(inout DiscontiguousColumnSlice<WrappedElement>, C)`](/documentation/TabularData/DiscontiguousColumnSlice/_=(_:_:)-6lzj)

Modifies a floating-point column slice by dividing each element in the column by
the corresponding optional value in a collection.

### Generating a Column by Combining Two Column Slices

### Generating a Column by Adding a Value

### Generating a Column by Subtracting a Value

### Generating a Column by Multiplying a Value

### Generating a Column by Dividing a Value

### Hashing a Column Slice

[`func hash(into: inout Hasher)`](/documentation/TabularData/DiscontiguousColumnSlice/hash(into:))

Hashes the essential components of the column slice by feeding them into a hasher.

### Supporting Types

[`typealias Element`](/documentation/TabularData/DiscontiguousColumnSlice/Element)

The type of the column slice’s elements.

[`typealias Index`](/documentation/TabularData/DiscontiguousColumnSlice/Index)

The type that represents a position in the column slice.

### Invoking Protocol Methods

  <doc:API-Sequence--DiscontiguousColumnSlice>

  <doc:API-Collection--DiscontiguousColumnSlice>

  <doc:API-Bidirectional-Collection--DiscontiguousColumnSlice>

  <doc:API-Random-Access-Collection--DiscontiguousColumnSlice>

### Instance Properties

[`var missingCount: Int`](/documentation/TabularData/DiscontiguousColumnSlice/missingCount)

The number of missing elements in the column slice.

### Default Implementations

[BidirectionalCollection Implementations](/documentation/TabularData/DiscontiguousColumnSlice/BidirectionalCollection-Implementations)

[Collection Implementations](/documentation/TabularData/DiscontiguousColumnSlice/Collection-Implementations)

[CustomDebugStringConvertible Implementations](/documentation/TabularData/DiscontiguousColumnSlice/CustomDebugStringConvertible-Implementations)

[CustomReflectable Implementations](/documentation/TabularData/DiscontiguousColumnSlice/CustomReflectable-Implementations)

[CustomStringConvertible Implementations](/documentation/TabularData/DiscontiguousColumnSlice/CustomStringConvertible-Implementations)

[Equatable Implementations](/documentation/TabularData/DiscontiguousColumnSlice/Equatable-Implementations)

[Hashable Implementations](/documentation/TabularData/DiscontiguousColumnSlice/Hashable-Implementations)

## Relationships

### Conforms To

[`BidirectionalCollection`](/documentation/Swift/BidirectionalCollection)

[`Sendable`](/documentation/Swift/Sendable)

[`Equatable`](/documentation/Swift/Equatable)

[`Hashable`](/documentation/Swift/Hashable)

[`MutableCollection`](/documentation/Swift/MutableCollection)

[`Collection`](/documentation/Swift/Collection)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`OptionalColumnProtocol`](/documentation/TabularData/OptionalColumnProtocol)

[`Escapable`](/documentation/Swift/Escapable)

[`CustomReflectable`](/documentation/Swift/CustomReflectable)

[`ColumnProtocol`](/documentation/TabularData/ColumnProtocol)

[`Sequence`](/documentation/Swift/Sequence)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`Copyable`](/documentation/Swift/Copyable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)