在 R 中將計算列新增到矩陣
Jesse John
2023年1月30日
本文展示了兩個任務:向現有矩陣新增一列,並在新列中包含計算值,例如總和或平均值。
在 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
有關更多詳細資訊,請參閱 matrix
、cbind
、rowSums
和 apply
函式的文件。
作者: Jesse John