我有一个名为matrix1的数据矩阵:
[,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的矩阵中的新值。
是否有一种方法可以循环这个矩阵,或者使用一个条件语句将正确的行除以适当的值?请告诉我!!
发布于 2021-02-19 13:00:53
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或者,作为一个循环:
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
}
}https://stackoverflow.com/questions/66277805
复制相似问题