我正在尝试组合两个连续数字的向量,以便生成一个矩阵,我可以从中绘制网格。特别是我的矢量分别包含经度和纬度数据,但为简单起见,我想说:
matrix(seq(1, 3, 1))
[,1]
[1,] 1
[2,] 2
[3,] 3
和
matrix(seq(1, 3, 1))
[,1]
[1,] 1
[2,] 2
[3,] 3
而我想要的只是:
[,1] [,2]
[1,] 1 1
[2,] 1 2
[3,] 1 3
[4,] 2 1
[5,] 2 2
[6,] 2 3
[7,] 3 1
[8,] 3 2
[9,] 3 3
(以上是假的,实际上不是来自R)我尝试使用嵌套的for循环无济于事。这似乎太简单了,不能给我这样的麻烦。
答案 0 :(得分:2)
您似乎在寻找expand.grid()
a <- 1:3
b <- 1:3
expand.grid(a=a,b=b)
# a b
# 1 1 1
# 2 2 1
# 3 3 1
# 4 1 2
# 5 2 2
# 6 3 2
# 7 1 3
# 8 2 3
# 9 3 3
## Or perhaps, if order matters to you
rev(expand.grid(b=b,a=a))
# a b
# 1 1 1
# 2 1 2
# 3 1 3
# 4 2 1
# 5 2 2
# 6 2 3
# 7 3 1
# 8 3 2
# 9 3 3
答案 1 :(得分:0)
您可以使用merge
:
m1 <- 1:3
m2 <- 1:3
merge(m1, m2, by=NULL)
x y
1 1 1
2 2 1
3 3 1
4 1 2
5 2 2
6 3 2
7 1 3
8 2 3
9 3 3
使用merge
的好处是,如果你有一个data.frame
而不是矢量,它可以很容易地处理它:
m1<- data.frame(x=1:3, a=rnorm(3))
m2 <- data.frame(y=1:3, b=rnorm(3))
merge(m1, m2, by=NULL)
x a y b
1 1 -0.6827197 1 -0.2046336
2 2 -1.5920405 1 -0.2046336
3 3 1.7696125 1 -0.2046336
4 1 -0.6827197 2 0.1738251
5 2 -1.5920405 2 0.1738251
6 3 1.7696125 2 0.1738251
7 1 -0.6827197 3 0.5166421
8 2 -1.5920405 3 0.5166421
9 3 1.7696125 3 0.5166421