【问题标题】:R: How can I change a matrix array? [closed]R:如何更改矩阵数组? [关闭]
【发布时间】:2013-07-31 00:11:00
【问题描述】:

我有一个矩阵,比如:

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

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

【问题讨论】:

  • @agstudy:我把第一列定义为向量,然后用$来替换,但是没用。
  • 我对你的新例子有点困惑 (aag -> G);如果您可以提供有关生物信息学目标的一些背景信息,那么Biostrings 包可能可以轻松实现...

标签: r matrix sequence bioinformatics


【解决方案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

【讨论】:

  • @agstudy:我试着简单地问我的问题。如果我想用“K”替换“aaa”,用“N”替换“aac”,用“G”替换“aag”,我应该如何更改代码?
  • @ToobaAbbassi-Daloii 我编辑我的答案。
【解决方案2】:

这可能更接近你想要做的:

 ## 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))

原地更换。

【讨论】:

  • @Ben Bolker:你是对的,但我想在没有任何 bioC 包的情况下这样做。
  • 只是出于好奇,为什么?
  • @Ben Bolker:这是我项目的一部分
猜你喜欢
  • 1970-01-01
  • 2018-01-19
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-02-08
相关资源
最近更新 更多