在R列表中搜索指定的模式

时间:2016-03-08 09:50:37

标签: r dataset

我有一个数据集存储为列表DataList

[[1]]

[1] a  

 [2] f 

 [3] e       

 [4] a 

[[2]] 

 [1] f 

 [2] f

 [3] e

我正在尝试创建一个函数Ge​​tfrequence,它返回列表DataList中给定模式的频率

GetFrequence<- function(pattern, DataList)
{
freq= 0
i = 1
while (i<= List.length())
 {
  if (.....)
    freq= freq + 1
 }
 return freq
}

我的问题是如何搜索列表中是否存在给定的模式?

1 个答案:

答案 0 :(得分:1)

我认为对于模式,你的意思是列表中的不同元素。那么这样的事情可能会有所帮助吗?

首先,让我们创建一个大致类似于上面提供的列表:

a <- list(letters[1:3], letters[1:2], letters[1:5])
[[1]]
[1] "a" "b" "c"

[[2]]
[1] "a" "b"

[[3]]
[1] "a" "b" "c" "d" "e"

现在,为了获得整个列表中每个项目的频率,我们可以unlist列表并将所有内容堆叠到一个向量中。一旦我们剩下一个简单的向量,我们就可以使用table

table(unlist(a))

 a b c d e 
 3 3 2 1 1 

请注意,您可能需要多次使用unlist,具体取决于您的实际list结构。也就是说,如果你有一个列表列表,可能需要稍微调整一下代码。在这种情况下,请发布str(your_list)