R:我怎样才能改变矩阵阵列?

时间:2013-07-31 00:11:01

标签: r matrix sequence bioinformatics

我有一个矩阵,如:

"aaa" 28
"aac" 8
"aag" 20

我想将“aaa”替换为“K”,将“aac”替换为“N”,将“aag”替换为“K”。我怎么能用R?

做到这一点

2 个答案:

答案 0 :(得分:1)

这里有很多选择。不幸的是,您没有表现出任何解决问题的努力,甚至没有做出明确和可重复的努力。例如,使用ifelse

dat <- read.table(text='"aaa" 28
                  "aac" 8
                  "aag" 20')
dat$V1 <- with(dat,ifelse(V1 %in% c('aaa','aag'),'K','N'))
dat
  V1 V2
1  K 28
2  N  8
3  K 20

修改  如果我想用“K”替换“aaa”,用“N”替换“aac”,用“G”替换“aag”:

dat$V1 <- with(dat,ifelse(V1 == 'aaa',
                          'K',
                          ifelse(V1=='aac','N','G')))
 dat
  V1 V2
1  K 28
2  N  8
3  G 20

答案 1 :(得分:0)

这可能更接近你正在尝试做的事情:

 ## if necessary, install the package first:
 ##  source("http://bioconductor.org/biocLite.R")
 ##  biocLite("Biostrings")
 library(Biostrings)
 d <- data.frame(string=c("aaa","aac","aag"),count=c(28,8,20))
 tfun <- function(x) as.character(translate(DNAString(x)))
 transform(d,aa=sapply(string,tfun))
 ##   string count aa
 ## 1    aaa    28  K
 ## 2    aac     8  N
 ## 3    aag    20  K

如果您愿意,可以使用

 transform(d,string=sapply(string,tfun))

进行替换。