在 R 中將計算列新增到矩陣

Jesse John 2023年1月30日 2022年5月18日
  1. 在 R 中將計算列新增到矩陣
  2. 在 R 中建立和新增計算列
在 R 中將計算列新增到矩陣

本文展示了兩個任務:向現有矩陣新增一列,並在新列中包含計算值,例如總和或平均值。

在 R 中將計算列新增到矩陣

我們可以使用 cbind() 函式將兩個具有相同行的矩陣組合在一起。

同樣的函式也可以在矩陣中新增一個向量。向量的元素數應與矩陣中的行數相同。

我們將按照我們想要結果的順序將矩陣或向量的名稱傳遞給 cbind()

示例程式碼:

# We will create two matrices with the
# same number of rows and join them
# using cbind.

i = matrix(data=5:16, nrow=4)
ii = matrix(data=17:24, nrow=4)

# Combine i and ii in both orders and
# check the results.
cbind(i, ii)

cbind(ii,i)

# To illustrate adding a column
# we will create and add a vector.
# The number of elements must
# match the row count of the matrix.
z = c(seq(from=60, to=90, by=10))

# Add z to one of the matrices as a column.
cbind(ii, z)
# We see the variable name.

# Use as.matrix to remove the variable name.
cbind(ii, as.matrix(z))

輸出:

> # Combine i and ii in both orders and
> # check the results.
> cbind(i, ii)
     [,1] [,2] [,3] [,4] [,5]
[1,]    5    9   13   17   21
[2,]    6   10   14   18   22
[3,]    7   11   15   19   23
[4,]    8   12   16   20   24
>
> cbind(ii,i)
     [,1] [,2] [,3] [,4] [,5]
[1,]   17   21    5    9   13
[2,]   18   22    6   10   14
[3,]   19   23    7   11   15
[4,]   20   24    8   12   16
>
> # Add z to one of the matrices as a column.
> cbind(ii, z)
            z
[1,] 17 21 60
[2,] 18 22 70
[3,] 19 23 80
[4,] 20 24 90
> # We see the variable name.
>
> # Use as.matrix to remove the variable name.
> cbind(ii, as.matrix(z))
     [,1] [,2] [,3]
[1,]   17   21   60
[2,]   18   22   70
[3,]   19   23   80
[4,]   20   24   90

在 R 中建立和新增計算列

我們需要將合​​適的函式傳遞給 cbind() 函式以新增計算列。

合適的函式是那些將應用於每一行的函式。它們包括 rowSums()rowMeans() 函式,以及可在 apply() 函式中使用的其他函式。

對於函式的資料來源,我們可以傳遞整個矩陣,也可以使用子設定語法選擇所需的列。

在下面的程式碼中,rowSums() 函式計算第 1 列和第 2 列的總和,apply() 函式用於計算第 2 列和第 3 列的 mean

apply() 函式的第二個引數 1 表示我們將後面的函式 mean 應用於行。

示例程式碼:

# Add a column with the sum of columns 1 and 2 of i.
cbind(i, rowSums(i[,c(1,2)])) # Based on the apply function.

# Add a column with the mean of columns 2 and 3 of i.
cbind(i, apply(i[,c(2,3)], 1, mean)) # Directly use the apply function.

輸出:

> # Add a column with the sum of columns 1 and 2 of i.
> cbind(i, rowSums(i[,c(1,2)])) # Based on the apply function.
     [,1] [,2] [,3] [,4]
[1,]    5    9   13   14
[2,]    6   10   14   16
[3,]    7   11   15   18
[4,]    8   12   16   20
>
> # Add a column with the mean of columns 2 and 3 of i.
> cbind(i, apply(i[,c(2,3)], 1, mean)) # Directly use the apply function.
     [,1] [,2] [,3] [,4]
[1,]    5    9   13   11
[2,]    6   10   14   12
[3,]    7   11   15   13
[4,]    8   12   16   14

有關更多詳細資訊,請參閱 matrixcbindrowSumsapply 函式的文件。

Author: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

相關文章 - R Matrix