-4

我有一个矩阵,例如:

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

我想用“K”替换“aaa”,用“N”替换“aac”,用“K”替换“aag”。我如何使用 R 来做到这一点?

4

2 回答 2

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
于 2013-07-31T00:27:03.917 回答
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))

就地更换。

于 2013-07-31T01:08:35.610 回答