当每个字符代表一个数字时,将字符串转换为求和

nou*_*use 4 string r

我有一个包含 DNA 序列字符串的向量:

x <- c("ATTAGCCGAGC", "TTCCGGTTAA")
Run Code Online (Sandbox Code Playgroud)

我想根据规则将这些字符串转换为总和

A <- 2
T <- 2
G <- 4
C <- 4
Run Code Online (Sandbox Code Playgroud)

这样 ATTAGCCGAGC 就会被翻译为“2+2+2+2+4+4+4+4+2+4+4”,最终输出将是“34”。

期望的输出:由原始向量 X 的一列和“总和变换”的另一列组成的数据帧。

谢谢。

我希望使用“T”不会有问题。

Sot*_*tos 5

您可以使用值创建一个命名向量,分割字符串,匹配和求和,即

vals <- setNames(c(2, 2, 4, 4), c('A', 'T', 'G', 'C'))
sapply(strsplit(x, ''), \(i)sum(vals[i]))
#[1] 34 28
Run Code Online (Sandbox Code Playgroud)

将其放入这样的数据框中,

data.frame(string = x, 
           val = sapply(strsplit(x, ''), \(i)sum(vals[i])))

       string val
1 ATTAGCCGAGC  34
2  TTCCGGTTAA  28
Run Code Online (Sandbox Code Playgroud)