在 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