如何将表函数应用于向量列表?

时间:2014-06-29 22:35:33

标签: r

我是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 ..

我有两个问题:

  1. ListPer是序列中出现的所有排列(ievector)的列表,我想将表函数应用于列表中的所有排列,因此最终结果将为:

    P   : occur
    
         

    1,2,3,4:34

         

    2,3,4,1:25

         

    2,1,3,4:15

  2. 结果表是否用作查找表,因此我可以检索任何统计分析的一个排列的出现次数。

  3. 非常感谢

1 个答案:

答案 0 :(得分:1)

您可以使用table()选项。您可以连接值并进行计数

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

或者你可以创建一个4D计数数组

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

然后你可以用

计算出来
tt["2","1","4","3"]
# [1] 33

请注意,这些是字符,因为“表格”索引会产生字符向量