首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何循环遍历数据矩阵并计算选定的行?

如何循环遍历数据矩阵并计算选定的行?
EN

Stack Overflow用户
提问于 2021-02-19 12:44:21
回答 3查看 54关注 0票数 1

我有一个名为matrix1的数据矩阵:

代码语言:javascript
运行
复制
  [,1] [,2] [,3] [,4] [,5] [,6]
A    1    1    4    1   19   15
C    2    1    1    1    1    1
G    1   19   15   19    1    4
T   18    1    2    1    1    2

对于行A和T,我希望所有的值除以0.3。对于行C和G,我希望所有的值除以0.2。然后,我希望返回一个名为matrix2的矩阵中的新值。

是否有一种方法可以循环这个矩阵,或者使用一个条件语句将正确的行除以适当的值?请告诉我!!

EN

Stack Overflow用户

回答已采纳

发布于 2021-02-19 13:00:53

代码语言:javascript
运行
复制
set.seed(1)
matrix1 <- matrix(rpois(24, lambda = 5), 4, 6)
rownames(matrix1) <- c("A", "C", "G", "T")
matrix1

#  [,1] [,2] [,3] [,4] [,5] [,6]
#A    4    3    6    6    6    9
#C    4    8    2    4   11    3
#G    5    9    3    7    4    6
#T    8    6    3    5    7    3


matrix2 <- matrix1 # make copy
ATs <- which(rownames(matrix1) %in% c("A", "T")) # index of A&T
CGs <- which(rownames(matrix1) %in% c("C", "G")) # index of C&G
matrix2[ATs,] <- matrix1[ATs,] / 0.3
matrix2[CGs,] <- matrix1[CGs,] / 0.2
matrix2

#      [,1] [,2] [,3]     [,4]     [,5] [,6]
#A 13.33333   10   20 20.00000 20.00000   30
#C 20.00000   40   10 20.00000 55.00000   15
#G 25.00000   45   15 35.00000 20.00000   30
#T 26.66667   20   10 16.66667 23.33333   10

或者,作为一个循环:

代码语言:javascript
运行
复制
for(i in seq(nrow(matrix1))){
  if(rownames(matrix1)[i] %in% c("A", "T")){
    matrix2[i,] <- matrix1[i,] / 0.3
  } else {
    matrix2[i,] <- matrix1[i,] / 0.2
  }
}
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66277805

复制
相关文章

相似问题

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