簡體   English   中英

合並兩個向量並獲得R中的向量列表

[英]Merge two vectors and get a list of vector in R

我有兩個向量:

u <- c(1, 3, 5)
v <- c(2, 4, 6)

然后,我想將其合並為res結果,該結果必須是二維向量的列表。

是否存在一種智能地執行以下操作的方法?

res <- list(c(u[1], v[1]), c(u[1], v[2]), c(u[1], v[3]), c(u[2], v[1]) ... )

編輯了問題,試圖更好地解釋我想要的。

您需要類似矢量的笛卡爾積

> u
[1] 1 3 5
> v
[1] 2 4 6

就像hrbrmstr用戶解釋的那樣,可以通過這種方式獲得組合

> r = expand.grid(v, u)
> r
  Var1 Var2
1    2    1
2    4    1
3    6    1
4    2    3
5    4    3
6    6    3
7    2    5
8    4    5
9    6    5

請注意,我切換了uv以適合您的目標數據結構。 然后我選擇兩個列向量

> x <- r[[2]]
> y <- r[[1]]
> x
[1] 1 1 1 3 3 3 5 5 5
> y
[1] 2 4 6 2 4 6 2 4 6

和他們的長度

> n <- length(x)
> n
[1] 9

然后使用n元素創建列表

> res <- vector(mode="list", length=n)

最后,列表被填充:

> for (i in 1:n) {
+ res[[i]] = c(x[i], y[i])
+ }

產生

> res
[[1]]
[1] 1 2

[[2]]
[1] 1 4

[[3]]
[1] 1 6

[[4]]
[1] 3 2

[[5]]
[1] 3 4

[[6]]
[1] 3 6

[[7]]
[1] 5 2

[[8]]
[1] 5 4

[[9]]
[1] 5 6

>

也許有一種更快的方法,但是我相信這可以提供您想要的數據結構。

除非您* 需要位置4的[3,2] ,否則您是否可以接受expand.grid的結果?

v1 <- c(1,3,5)
v2 <- c(2,4,6)
as.matrix(expand.grid(v1,v2))
##       Var1 Var2
##  [1,]    1    2
##  [2,]    3    2
##  [3,]    5    2
##  [4,]    1    4
##  [5,]    3    4
##  [6,]    5    4
##  [7,]    1    6
##  [8,]    3    6
##  [9,]    5    6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM