📜  在 R 语言中按列组合向量、矩阵或数据帧 - cbind()函数(1)

📅  最后修改于: 2023-12-03 15:07:48.553000             🧑  作者: Mango

在 R 语言中按列组合向量、矩阵或数据帧 - cbind()函数

在 R 语言中,我们可以使用 cbind() 函数按列组合向量、矩阵或数据帧。其中,cbind() 的意思是 column bind,即按列拼接。下面我们来介绍 cbind() 的使用方法和一些注意事项。

基本语法

cbind() 函数的基本语法如下:

cbind(..., deparse.level = 1)

其中:

  • ... 表示要组合的向量、矩阵或数据帧,可以是多个,数量不限。
  • deparse.level 是一个可选参数,指定要解析的级别。默认值为 1,表示只解析到函数或变量名称。如果设为 2,则会将表达式解析到更高的级别。该参数一般情况下无需指定。
示例

下面我们以一个简单的例子来演示 cbind() 函数的使用。

向量组合

首先,我们可以使用 cbind() 将两个向量组合成一个矩阵。例如,我们将两个长度相同的向量 xy 组合成一个矩阵 m,代码如下:

x <- c(1, 2, 3)
y <- c('a', 'b', 'c')
m <- cbind(x, y)
print(m)

输出结果如下:

     x y  
[1,] 1 "a"
[2,] 2 "b"
[3,] 3 "c"

可以看到,向量 xy 分别组成了矩阵中的一列,它们的类型被自动转换为相同的类型(在这里是字符型)。需要注意的是,如果要组合的向量长度不相等,cbind() 会产生一个错误。

矩阵组合

除了向量,我们也可以使用 cbind() 将两个或多个矩阵组合成一个更大的矩阵。例如,我们有两个矩阵 m1m2,代码如下:

m1 <- matrix(c(1, 2, 3, 4), nrow = 2)
m2 <- matrix(c('a', 'b', 'c', 'd'), nrow = 2)
m3 <- cbind(m1, m2)
print(m3)

输出结果如下:

     [,1] [,2] [,3] [,4]
[1,]    1    3 "a"  "c" 
[2,]    2    4 "b"  "d"

可以看到,两个矩阵 m1m2 分别组成了矩阵 m3 的两列。需要注意的是,如果要组合的矩阵列数不相等,cbind() 会产生一个错误。

数据帧组合

最后,我们也可以使用 cbind() 将两个或多个数据帧组合成一个更大的数据帧。需要注意的是,要组合的数据帧的行数必须相同,否则 cbind() 会产生一个错误。

例如,我们有两个数据帧 df1df2,代码如下:

df1 <- data.frame(x = c(1, 2, 3), y = c('a', 'b', 'c'))
df2 <- data.frame(z = c(TRUE, FALSE, TRUE))
df3 <- cbind(df1, df2)
print(df3)

输出结果如下:

  x y z  
1 1 "a" TRUE 
2 2 "b" FALSE
3 3 "c" TRUE 

可以看到,两个数据帧 df1df2 分别组成了数据帧 df3 的两列。其中,z 列由布尔值转换成了数值型。