获取另一个向量内的向量索引

时间:2012-11-24 17:49:22

标签: r

我有一个关于如何通过列名填写矩阵的问题。我认为以下示例将清楚地说明我想要的内容。

mat <- matrix(NA, nrow = 10, ncol = 5)
colnames(mat) <- c("Apple", "Orange", "Pear", "Grape", "Mango")

现在我有一个新的矩阵,其行名是mat中列名的一个子集,并且具有任意顺序。

jmat <- matrix(rnorm(4), nrow = 4, ncol = 1)
rownames(jmat) <- sample(c("Apple", "Orange", "Grape", "Mango"))

我想用mat中的相应值填充jmat的第一行。 jmat中“Apple”的值应位于mat等的“Apple”列中。因为jmat中没有“Pear”行,所以“Pear”列在mat中仍然是NA。这样做最简单的方法是什么?

谢谢。

2 个答案:

答案 0 :(得分:1)

外部联接:

merge(mat, t(jmat),all=T)
      Apple    Orange      Grape      Mango Pear
1  2.372201 0.8330786 -0.4295133 -0.8425752   NA
2        NA        NA         NA         NA   NA
3        NA        NA         NA         NA   NA
4        NA        NA         NA         NA   NA
5        NA        NA         NA         NA   NA
6        NA        NA         NA         NA   NA
7        NA        NA         NA         NA   NA
8        NA        NA         NA         NA   NA
9        NA        NA         NA         NA   NA
10       NA        NA         NA         NA   NA
11       NA        NA         NA         NA   NA

答案 1 :(得分:0)

我发现match函数可以在另一个向量中给出向量的索引。

> jmat
             [,1]
Grape  -0.2728387
Apple   2.2843550
Mango  -1.3079324
Orange -0.6129420
> match(rownames(jmat), colnames(mat))
[1] 4 1 5 2
> ind <- match(rownames(jmat), colnames(mat))
> mat[1, ind] <- jmat[, 1]
> mat
         Apple    Orange Pear      Grape     Mango
 [1,] 2.284355 -0.612942   NA -0.2728387 -1.307932
 [2,]       NA        NA   NA         NA        NA
 [3,]       NA        NA   NA         NA        NA
 [4,]       NA        NA   NA         NA        NA
 [5,]       NA        NA   NA         NA        NA
 [6,]       NA        NA   NA         NA        NA
 [7,]       NA        NA   NA         NA        NA
 [8,]       NA        NA   NA         NA        NA
 [9,]       NA        NA   NA         NA        NA
[10,]       NA        NA   NA         NA        NA
相关问题