我有一个矩阵,例如:
"aaa" 28
"aac" 8
"aag" 20
我想用“K”替换“aaa”,用“N”替换“aac”,用“K”替换“aag”。我如何使用 R 来做到这一点?
我有一个矩阵,例如:
"aaa" 28
"aac" 8
"aag" 20
我想用“K”替换“aaa”,用“N”替换“aac”,用“K”替换“aag”。我如何使用 R 来做到这一点?
这里有很多选择。不幸的是,您没有表现出任何努力来解决问题,甚至没有使问题变得清晰和可重复。例如,使用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
这可能更接近你想要做的事情:
## 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))
就地更换。