从每一行中提取特定数量的字符并在 R 中有条件地插入字母
Extract specific number of characters from every row and insert letters conditionally in R
我正在处理 DNA 测序数据,我需要从矩阵中提取特定数量的核苷酸。
数据集看起来像这样
1 "GCGGGCGGGGCGGGGTCTTGTGTGGGCTCAGC"
2 "GCAGTAA"
3 "GAACAGTGGCCGGAGCGTCT"
....(很多很多行)
从每一行,(1) 我想从 'tail' 中提取 10 个核苷酸,(2) 并想在开头引入虚拟字母 'Z' 以总共 10 个核苷酸,只有当核苷酸长度小于 10nts。
最终结果应该是这样的。
1 "TGGGCTCAGC"
2 "ZZZGCAGTAA"
3 "CGGAGCGTCT"
....(很多很多行)
首先我尝试了 'tail' 函数来尝试提取最后的核苷酸
尾巴(我的数据,n=10)
但是这个 returns 从 mydata 矩阵末尾开始的 10 行,而不是 10 个核苷酸。
有什么方法可以使用 R 实现吗?
非常感谢您的帮助
tail()
不是这项工作的正确功能,因为它查看 元素 。您想要的是查看每个元素内部的 个字符 的函数。
我想你有很多核苷酸要处理,所以我建议你使用非常高效的 stringi
包。在下面的代码中,只有在需要矩阵结果时才需要 matrix()
。否则将返回一个字符向量。
library(stringi)
matrix(stri_pad(stri_sub(m, -10L), 10L, pad = "Z"))
# [,1]
# [1,] "TGGGCTCAGC"
# [2,] "ZZZGCAGTAA"
# [3,] "CGGAGCGTCT"
其中m
是原始数据
m <- matrix(
c("GCGGGCGGGGCGGGGTCTTGTGTGGGCTCAGC", "GCAGTAA", "GAACAGTGGCCGGAGCGTCT")
)
我正在处理 DNA 测序数据,我需要从矩阵中提取特定数量的核苷酸。
数据集看起来像这样
1 "GCGGGCGGGGCGGGGTCTTGTGTGGGCTCAGC"
2 "GCAGTAA"
3 "GAACAGTGGCCGGAGCGTCT"
....(很多很多行)
从每一行,(1) 我想从 'tail' 中提取 10 个核苷酸,(2) 并想在开头引入虚拟字母 'Z' 以总共 10 个核苷酸,只有当核苷酸长度小于 10nts。
最终结果应该是这样的。
1 "TGGGCTCAGC"
2 "ZZZGCAGTAA"
3 "CGGAGCGTCT"
....(很多很多行)
首先我尝试了 'tail' 函数来尝试提取最后的核苷酸
尾巴(我的数据,n=10)
但是这个 returns 从 mydata 矩阵末尾开始的 10 行,而不是 10 个核苷酸。 有什么方法可以使用 R 实现吗?
非常感谢您的帮助
tail()
不是这项工作的正确功能,因为它查看 元素 。您想要的是查看每个元素内部的 个字符 的函数。
我想你有很多核苷酸要处理,所以我建议你使用非常高效的 stringi
包。在下面的代码中,只有在需要矩阵结果时才需要 matrix()
。否则将返回一个字符向量。
library(stringi)
matrix(stri_pad(stri_sub(m, -10L), 10L, pad = "Z"))
# [,1]
# [1,] "TGGGCTCAGC"
# [2,] "ZZZGCAGTAA"
# [3,] "CGGAGCGTCT"
其中m
是原始数据
m <- matrix(
c("GCGGGCGGGGCGGGGTCTTGTGTGGGCTCAGC", "GCAGTAA", "GAACAGTGGCCGGAGCGTCT")
)