Есть много способов решить эту проблему. Я бы создал индексный вектор для строк, которые сначала содержат A, а затем применил замены к различным строкам, используя функцию recode
пакета dplyr
.
# Creating the Matrix
X <- matrix(
c("AA", "AG", "GG", "GA", "AA",
"CC", "CG", "CC", "GC", "GG",
"AC", "CC", "CA", "CA", "CC"), byrow=TRUE, nrow=3)
# Index
index_a <- apply(X, 1, function(i){
any(grepl("A",i))
})
# NA matrix for the result
Y <- matrix(NA_integer_, nrow(X), ncol(X))
# First replacement
Y[index_a, ] <- dplyr::recode(
X[index_a, ],
AA = 0L,
AG = 1L,
GG = 2L,
AC = 1L,
CC = 2L,
GA = 1L,
CA = 1L
)
# Second replacement
Y[!index_a, ] <- dplyr::recode(
X[!index_a, ],
CC = 0L,
CG = 1L,
GG = 2L,
GC = 1L
)