我应该有这样的输出:
AAAA
AAAG
AAAC
AAAT
AAGA
AAGG
...
我想首先用数字来做这件事,将“A”表示为 1,将“G”表示为 2,等等......
1111
1112
...
然后将 1 转换为“A”,依此类推。我找到了这个函数expand.grid
,但这给了我一个包含 4 个变量(4 列)的数据框,每个变量代表一个数字。
你有别的想法吗?
提前致谢。
我应该有这样的输出:
AAAA
AAAG
AAAC
AAAT
AAGA
AAGG
...
我想首先用数字来做这件事,将“A”表示为 1,将“G”表示为 2,等等......
1111
1112
...
然后将 1 转换为“A”,依此类推。我找到了这个函数expand.grid
,但这给了我一个包含 4 个变量(4 列)的数据框,每个变量代表一个数字。
你有别的想法吗?
提前致谢。
编辑:我原来的答案错误地假设你已经有了索引向量。要从头开始生成这些字母的所有可能组合的向量,请尝试以下操作:
x <- expand.grid(rep(list(c('A', 'G', 'T', 'C')), 4))
do.call(paste0, x)
您可以使用chartr
.
x <- c(1111, 1112, 1113, 1114, 1121)
chartr('1234', 'AGCT', x)
# [1] "AAAA" "AAAG" "AAAC" "AAAT" "AAGA"
如果我理解正确,您可以获得所有组合,只有数字被分成不同的列。你想要你的输出在哪里?如果你想输出到一个文件,你可以不只是做这样的事情:
sink(SOME_FILENAME)
for(i in 1:nrow(YOUR_DATAFRAME))
{
for(j in 1:ncol(YOUR_DATAFRAME))
{
print(YOUR_DATAFRAME[i,j])
}
print("\n")
}
在意识到你只是想要一个完整的 AGCT 4 元素组合/排列的“甲板”(而不是数字到字母的翻译,我认为这将比一种expand.grid
方法快得多。:
levs <- paste0( gl(4, 4^3, 4^4, labels=c("A","G","C","T") ),
gl(4, 4^2, 4^4, labels=c("A","G","C","T")),
gl(4, 4, 4^4, labels=c("A","G","C","T")),
gl(4, 1, 4^4, labels=c("A","G","C","T")) )
head(levs)
[1] "AAAA" "AAAG" "AAAC" "AAAT" "AAGA" "AAGG"