2014-06-29 94 views
3

我相信新的R和I有以下代码:如何将表函数应用于向量列表?

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排序顺序上..

我有两个问题:

  1. ListPer是所有排列的列表(即.vector)发生的顺序,我想表函数应用到列表中的所有排列因此最终的结果将是:

    P : occur 
    

    1,2,3,4:34

    2,3,4,1:25

    2,1,3,4:15

  2. 是否导致表作为查找表,所以我可以检索一个permutati发生的数进行任何统计分析。

非常感谢您

+0

我想你可以通过使用'orde节省一些麻烦r(c(39,12,40,18,20)[1:4])'来获得你的'排列'值。 –

回答

1

你必须使用table()一些选项。你可以串联的价值观和做一个计数

tt<-table(sapply(ListPer, paste, collapse=":")) 
tt["2:1:4:3"] 
# [1] 33 

或者你可以创建数

tt<-table(data.frame(do.call(rbind, ListPer))) 

的四维阵列,然后你可以得到数出与

tt["2","1","4","3"] 
# [1] 33 

注意这些是字符,因为'表'索引结果与字符向量

+0

不是说'tt'用'as.numeric'转换是非常困难的:-) –

+0

'tt'本身包含数字值,它只是对应于唯一观察到的等级的rownames和colnames是字符值。 – MrFlick

+0

oops。对不起'回合 –

相关问题