从两个向量创建元组

Los*_*Lin 21 r

如果我具有相同的长度的两个向量A<-c(5,10)B<-c(7,13)如何可以很容易地将这些两个向量成单个元组向量即c((5,7),(7,13))

42-*_*42- 18

其他人提到了名单.我看到其他可能性:

cbind(A, B)  # makes a column-major  2x2-"vector"
rbind(A, B)  # an row major 2x2-"vector" which could also be added to an array with `abind`
Run Code Online (Sandbox Code Playgroud)

也可以保留他们的"起源"

AB <- cbind(A=A, B=B)
array(c(AB,AB+10), c(2,2,2) )
, , 1
     [,1] [,2]
[1,]    5    7
[2,]   10   13
, , 2
     [,1] [,2]
[1,]   15   17
[2,]   20   23

> abind( array(c(AB,AB+10), c(2,2,2) ), AB+20)
, , 1
      A  B
[1,]  5  7
[2,] 10 13

, , 2
      A  B
[1,] 15 17
[2,] 20 23

, , 3
      A  B
[1,] 25 27
[2,] 30 33
Run Code Online (Sandbox Code Playgroud)


Bri*_*ggs 9

您的元组向量c((5,7),(7,13))是无效的语法.但是,你的措辞让我觉得你在考虑类似python的东西zip.你想如何用R代表你的元组?R具有异构(递归)类型list和同质类型vector; 没有标量类型(即只包含单个值的类型),只有长度为1的向量(有点过于简单化).

如果你希望你的元组是矩阵的行(所有类型相同,它们在这里):

rbind(A,B)
Run Code Online (Sandbox Code Playgroud)

如果你想要一个矢量列表

mapply(c, A, B, SIMPLIFY=FALSE)
Run Code Online (Sandbox Code Playgroud)

如果你想列出的名单(这是你需要什么,如果AB是不是同一类型)

mapply(list, A, B, SIMPLIFY=FALSE)
Run Code Online (Sandbox Code Playgroud)

把这一切放在一起:

> A<-c(5,10)
> B<-c(7,13)
> 
> cbind(A,B)
      A  B
[1,]  5  7
[2,] 10 13
> mapply(c, A, B, SIMPLIFY=FALSE)
[[1]]
[1] 5 7

[[2]]
[1] 10 13

> mapply(list, A, B, SIMPLIFY=FALSE)
[[1]]
[[1]][[1]]
[1] 5

[[1]][[2]]
[1] 7


[[2]]
[[2]][[1]]
[1] 10

[[2]][[2]]
[1] 13
Run Code Online (Sandbox Code Playgroud)