2014-10-11 76 views
0

與重複的圖案在R,I具有一個列表與諸如查找中的R

1 "a" "b" "c" 
2 "a" "a" "b" "d" 
3 "a" "a" 

我需要確定在列表中通常存在的模式的數據的列表。例如,在這裏,「a」,「a」和「a」,「b」是常見的。我嘗試使用eclat(),但不允許在每個列表中重複的值。然後,我嘗試刪除重複的值,但後來我失去了信息(如「a」「a」是一種頻繁的模式)。

我也嘗試重命名重複出現,但是「a」「b」和「a」「a」「b」不會返回「a」「b」作爲模式,因爲第二個列表將會是重新命名爲「a」「a2」「b」。

有沒有更好的方法來做到這一點?

更新:

每個列表中的字符串可以是單個字符或字符的字符串。例如

1 "a+12" "bfd" "c" 
2 "a+12" "a+12" "bfd" "d" 
3 "a+12" "a+12" "a" 

在這裏, 「A + 12」, 「BFD」 和 「+ 12」,「A + 12應該被識別爲圖案

+0

你只找2個英文字母圖案 – 2014-10-11 22:42:34

+0

沒有任何模式,但我必須承認相同值的重複設置的模式以及。 – user340342 2014-10-11 22:53:32

回答

0

至少與樣品數據,像下面長相幫助:?

#data in a 'list' 
myls = list(x1 = c("a+12", "bfd", "c"), 
      x2 = c("a+12", "a+12", "bfd", "d"), 
      x3 = c("a+12", "a+12", "a")) 

pats = table(unlist(lapply(myls, 
      function(x) combn(seq_along(x), 2, 
          function(i) paste(x[i[1]:i[2]], collapse = ";"))))) 
strsplit(names(pats[pats == max(pats)]), ";") 
#[[1]] 
#[1] "a+12" "a+12" 
# 
#[[2]] 
#[1] "a+12" "bfd"