我有一个矩阵,如:
"aaa" 28
"aac" 8
"aag" 20
我想将“aaa”替换为“K”,将“aac”替换为“N”,将“aag”替换为“K”。我怎么能用R?
做到这一点答案 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))
进行替换。