0

列名で行列を埋める方法について質問があります。次の例は、私が何を望んでいるのかを明確にするだろうと思います。

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。の「Apple」の値はjmat、 の「Apple」列にあるはずですmat。 には「梨」行がないjmatため、 の「梨」列matは のままNAです。それを行う最も簡単な方法は何ですか?

ありがとうございました。

4

2 に答える 2

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
于 2012-11-24T17:55:37.793 に答える
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
于 2012-12-03T14:23:04.387 に答える