如何将不同长度的向量在 R 中结合在一起而不重复较小向量的元素?


我们可以使用 cbind 按列合并向量,无论这些向量是否等长。如果向量等长,则这两个向量的所有值都将打印出来,但如果这些向量的长度不同,则较小向量的值将重复。但是,我们可能不想重复较小向量的值/元素,而通过将较小向量的长度设置为较大向量的长度,这是可能的。这将在原始向量没有值的较小向量中创建 NA 值。

示例 1

x1<-c(4,7,8,12)
x2<-1:20
n<-max(length(x1),length(x2))
length(x1)<-n
cbind(x1,x2)

输出

 x1 x2
[1,] 4 1
[2,] 7 2
[3,] 8 3
[4,] 12 4
[5,] NA 5
[6,] NA 6
[7,] NA 7
[8,] NA 8
[9,] NA 9
[10,] NA 10
[11,] NA 11
[12,] NA 12
[13,] NA 13
[14,] NA 14
[15,] NA 15
[16,] NA 16
[17,] NA 17
[18,] NA 18
[19,] NA 19
[20,] NA 20

示例 2

y1<-c("A","B","C","D","E")
y2<-LETTERS[1:20]
n<-max(length(y1),length(y2))
length(y1)<-n
cbind(y1,y2)

输出

y1 y2
[1,] "A" "A"
[2,] "B" "B"
[3,] "C" "C"
[4,] "D" "D"
[5,] "E" "E"
[6,] NA "F"
[7,] NA "G"
[8,] NA "H"
[9,] NA "I"
[10,] NA "J"
[11,] NA "K"
[12,] NA "L"
[13,] NA "M"
[14,] NA "N"
[15,] NA "O"
[16,] NA "P"
[17,] NA "Q"
[18,] NA "R"
[19,] NA "S"
[20,] NA "T"

示例 3

z1<-1:20
z2<-16:20
n<-max(length(z1),length(z2))
length(z2)<-n
cbind(z1,z2)

输出

z1 z2
[1,] 1 16
[2,] 2 17
[3,] 3 18
[4,] 4 19
[5,] 5 20
[6,] 6 NA
[7,] 7 NA
[8,] 8 NA
[9,] 9 NA
[10,] 10 NA
[11,] 11 NA
[12,] 12 NA
[13,] 13 NA
[14,] 14 NA
[15,] 15 NA
[16,] 16 NA
[17,] 17 NA
[18,] 18 NA
[19,] 19 NA
[20,] 20 NA

更新于:2020 年 8 月 21 日

903 次浏览

开启您的 事业

通过完成本课程获得认证

开始
广告