在 R 中将计算列添加到矩阵

Jesse John 2023年1月30日
  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 函数的文档。

作者: 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