首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取一个向量中另一个向量的索引

获取一个向量中另一个向量的索引
EN

Stack Overflow用户
提问于 2012-11-25 01:49:22
回答 2查看 62关注 0票数 0

我有一个关于如何通过列名填充矩阵的问题。我认为下面的例子可以清楚地说明我想要什么。

代码语言:javascript
运行
复制
mat <- matrix(NA, nrow = 10, ncol = 5)
colnames(mat) <- c("Apple", "Orange", "Pear", "Grape", "Mango")

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

代码语言:javascript
运行
复制
jmat <- matrix(rnorm(4), nrow = 4, ncol = 1)
rownames(jmat) <- sample(c("Apple", "Orange", "Grape", "Mango"))

我想用jmat中的相应值填充mat的第一行。jmat中"Apple“的值应该在mat中的"Apple”列中,依此类推。因为jmat中没有"Pear“行,所以mat中的"Pear”列仍然是NA。做这件事最简单的方法是什么?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-03 22:23:04

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

代码语言:javascript
运行
复制
> 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
票数 0
EN

Stack Overflow用户

发布于 2012-11-25 01:55:38

外部联接:

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13543866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档