### 3.6. Operations on rows and columns

3.6.1. `igraph_matrix_get_row` — Extract a row
3.6.2. `igraph_matrix_get_col` — Select a column
3.6.3. `igraph_matrix_set_row` — Set a row from a vector.
3.6.4. `igraph_matrix_set_col` — Set a column from a vector.
3.6.5. `igraph_matrix_swap_rows` — Swap two rows
3.6.6. `igraph_matrix_swap_cols` — Swap two columns
3.6.7. `igraph_matrix_select_rows` — Select some rows of a matrix
3.6.8. `igraph_matrix_select_cols` — Select some columns of a matrix

#### 3.6.1. `igraph_matrix_get_row` — Extract a row

```int igraph_matrix_get_row(const igraph_matrix_t *m,
igraph_vector_t *res, long int index);
```

Extract a row from a matrix and return it as a vector.

Arguments:

 `m`: The input matrix. `res`: Pointer to an initialized vector, it will be resized if needed. `index`: The index of the row to select.

Returns:

 Error code.

Time complexity: O(n), the number of columns in the matrix.

#### 3.6.2. `igraph_matrix_get_col` — Select a column

```int igraph_matrix_get_col(const igraph_matrix_t *m,
igraph_vector_t *res,
long int index);
```

Extract a column of a matrix and return it in a vector.

Arguments:

 `m`: The input matrix. `res`: The result will we stored in this vector. It should be initialized and will be resized as needed. `index`: The index of the solumn to select.

Returns:

 Error code.

Time complexity: O(n), the number of rows in the matrix.

#### 3.6.3. `igraph_matrix_set_row` — Set a row from a vector.

```int igraph_matrix_set_row(igraph_matrix_t *m,
const igraph_vector_t *v, long int index);
```

Sets the elements of a row, from the given vector. The length of the vector and the number of columns in the matrix must match, otherwise and error is triggered.

Arguments:

 `m`: The input matrix. `v`: The vector containing the new elements of the row. `index`: Index of the row to set.

Returns:

 Error code.

Time complexity: O(n), the number of columns in the matrix.

#### 3.6.4. `igraph_matrix_set_col` — Set a column from a vector.

```int igraph_matrix_set_col(igraph_matrix_t *m,
const igraph_vector_t *v, long int index);
```

Sets the elements of a column, from the given vector. The length of the vector and the number of rows in the matrix must match, otherwise and error is triggered.

Arguments:

 `m`: The input matrix. `v`: The vector containing the new elements of the column. `index`: Index of the column to set.

Returns:

 Error code.

Time complexity: O(m), the number of rows in the matrix.

#### 3.6.5. `igraph_matrix_swap_rows` — Swap two rows

```int igraph_matrix_swap_rows(igraph_matrix_t *m,
long int i, long int j);
```

Swap two rows in the matrix.

Arguments:

 `m`: The input matrix. `i`: The index of the first row. `j`: The index of the second row.

Returns:

 Error code.

Time complexity: O(n), the number of columns.

#### 3.6.6. `igraph_matrix_swap_cols` — Swap two columns

```int igraph_matrix_swap_cols(igraph_matrix_t *m,
long int i, long int j);
```

Swap two columns in the matrix.

Arguments:

 `m`: The input matrix. `i`: The index of the first column. `j`: The index of the second column.

Returns:

 Error code.

Time complexity: O(m), the number of rows.

#### 3.6.7. `igraph_matrix_select_rows` — Select some rows of a matrix

```int igraph_matrix_select_rows(const igraph_matrix_t *m,
igraph_matrix_t *res,
const igraph_vector_t *rows);
```

This function selects some rows of a matrix and returns them in a new matrix. The result matrix should be initialized before calling the function.

Arguments:

 `m`: The input matrix. `res`: The result matrix. It should be initialized and will be resized as needed. `rows`: Vector, it contains the row indices (starting with zero) to extract. Note that no range checking is performed.

Returns:

 Error code.

Time complexity: O(nm), n is the number of rows, m the number of columns of the result matrix.

#### 3.6.8. `igraph_matrix_select_cols` — Select some columns of a matrix

```int igraph_matrix_select_cols(const igraph_matrix_t *m,
igraph_matrix_t *res,
const igraph_vector_t *cols);
```

This function selects some columns of a matrix and returns them in a new matrix. The result matrix should be initialized before calling the function.

Arguments:

 `m`: The input matrix. `res`: The result matrix. It should be initialized and will be resized as needed. `cols`: Vector, it contains the column indices (starting with zero) to extract. Note that no range checking is performed.

Returns:

 Error code.

Time complexity: O(nm), n is the number of rows, m the number of columns of the result matrix.