我有一个数据集存储为列表DataList
[[1]]
[1] a
[2] f
[3] e
[4] a
[[2]]
[1] f
[2] f
[3] e
我正在尝试创建一个函数Getfrequence,它返回列表DataList中给定模式的频率
GetFrequence<- function(pattern, DataList)
{
freq= 0
i = 1
while (i<= List.length())
{
if (.....)
freq= freq + 1
}
return freq
}
我的问题是如何搜索列表中是否存在给定的模式?
答案 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)
。