【发布时间】:2014-06-29 22:35:33
【问题描述】:
我是 R 新手,我有以下代码:
Permutation<-function(sequence,k)
{
List <- list()
numberkmers <-length(sequence)-k+1
for (i in 1:numberkmers)
{
j <-i+k-1
kmer <- sequence[i:j]
kmertmp <- sequence[i:j]
kmer <-sort(kmer)
perlist <-c()
for (l in 1:k)
{
index <- which(kmer==kmertmp[l])
perlist <- c(perlist,index)
}
List[[i]] <- perlist
}
return(List)
}
sequence <- qnorm(runif(1000),100,15)
ListPer <- Permutation(sequence,4)
此代码根据序列中 k 个数字的顺序产生排列,即如果序列是 {39,12,40,18,20} 和 k=4,则第一个排列是 3,1,4,2,具体取决于 39,12,40,20 的排序顺序..
我有两个问题:
-
ListPer是序列中发生的所有排列(即向量)的列表,我想将表函数应用于列表中的所有排列,因此最终结果将是:P : occur1,2,3,4: 34
2,3,4,1: 25
2,1,3,4: 15
结果表是否用作查找表,以便我可以检索一个排列的出现次数以进行任何统计分析。
非常感谢
【问题讨论】:
-
我认为您可以通过使用
order(c(39,12,40,18,20)[1:4])获取您的“排列”值来节省一些麻烦。
标签: r