我应该有这样的输出:
AAAA
AAAG
AAAC
AAAT
AAGA
AAGG
...
我想先用数字做这个,将“A”表示为1,将“G”表示为2,等等......
1111
1112
...
后来将1转换为“A”,依此类推。我找到了这个函数expand.grid
,但这给了我一个包含4个变量(4列)的数据框,每个变量都有一个数字。
你还有其他想法吗?
提前致谢。
答案 0 :(得分: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"
答案 1 :(得分: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")
}
答案 2 :(得分:0)
在意识到你只想要一个4元素组合/ AGCT排列的完整“套牌”之后(而不是将字母翻译成字母,我认为这比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"