3

我应该有这样的输出:

AAAA
AAAG
AAAC
AAAT
AAGA
AAGG
...

我想首先用数字来做这件事,将“A”表示为 1,将“G”表示为 2,等等......

1111
1112
...

然后将 1 转换为“A”,依此类推。我找到了这个函数expand.grid,但这给了我一个包含 4 个变量(4 列)的数据框,每个变量代表一个数字。

你有别的想法吗?

提前致谢。

4

3 回答 3

9

编辑:我原来的答案错误地假设你已经有了索引向量。要从头开始生成这些字母的所有可能组合的向量,请尝试以下操作:

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"
于 2013-10-25T15:00:57.140 回答
0

如果我理解正确,您可以获得所有组合,只有数字被分成不同的列。你想要你的输出在哪里?如果你想输出到一个文件,你可以不只是做这样的事情:

sink(SOME_FILENAME)

for(i in 1:nrow(YOUR_DATAFRAME))
{
    for(j in 1:ncol(YOUR_DATAFRAME))
    {
        print(YOUR_DATAFRAME[i,j])
    }

    print("\n")
}
于 2013-10-25T15:05:32.553 回答
0

在意识到你只是想要一个完整的 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"
于 2013-10-29T20:07:48.390 回答