R 如何计算列表和另一个文件的每列中出现的字符串数?
我正在寻找一种方法(最好但不一定在R中)来查找参考列表中的项目在一系列列表中出现的次数。我需要知道参考列表和其他列表之间每次比较的重叠程度 因此,我有一个列表,其中包含一系列字符串,如下所示(前4行): 我们称之为ListA 然后我有一个制表符分隔的文本文件(file2),其中有几列包含类似的字符串。每列都是一个类似的独立列表:R 如何计算列表和另一个文件的每列中出现的字符串数?,r,string-comparison,overlap,R,String Comparison,Overlap,我正在寻找一种方法(最好但不一定在R中)来查找参考列表中的项目在一系列列表中出现的次数。我需要知道参考列表和其他列表之间每次比较的重叠程度 因此,我有一个列表,其中包含一系列字符串,如下所示(前4行): 我们称之为ListA 然后我有一个制表符分隔的文本文件(file2),其中有几列包含类似的字符串。每列都是一个类似的独立列表: A25325 A5634 A765436 A232 A3255 A35674 A5353 A474 A3453 A632 A5464
A25325 A5634 A765436 A232
A3255 A35674 A5353 A474
A3453 A632 A5464 A863
A5543 A656 A8768 A684
我知道shell中有几种方法可以检查两个列表之间的重叠,但我不知道如何说:以listA为例,计算另一个文件中的每一列出现listA字符串的次数。对于每个列输出,在列和列表中找到的字符串数。
因此,问题是如何迭代文本文件中的列并输出重叠量
在上面的示例中,输出为:1 0
因为A3255出现在列表A和文件2的第1列中
输出格式并不重要,只是通过某种方式知道每个文件中发生了多少重叠
谢谢
抱歉,如果问题重复,我已搜索但尚未看到 如果将制表符分隔的文本文件读入简单的data.frame,则可以使用
apply()
函数:
listA <- c("A2345", "A3545", "A643636", "A3255")
listB <- data.frame(b1 = c("A25325", "A3255", "A3453", "A5543"),
b2 = c("A5634", "A35674", "A632", "A656"),
b3 = c("A765436", "A5353", "A5464", "A8768"),
b4= c("A232", "A474", "A863", "A684"))
listB
# b1 b2 b3 b4
# 1 A25325 A5634 A765436 A232
# 2 A3255 A35674 A5353 A474
# 3 A3453 A632 A5464 A863
# 4 A5543 A656 A8768 A684
apply()函数中的参数MARGIN=2
将在列上迭代搜索。您可以在这里查看:
listA <- c("A2345", "A3545", "A643636", "A3255")
listB <- data.frame(b1 = c("A25325", "A3255", "A3453", "A5543"),
b2 = c("A5634", "A35674", "A632", "A656"),
b3 = c("A765436", "A5353", "A5464", "A8768"),
b4= c("A232", "A474", "A863", "A684"))
listB
# b1 b2 b3 b4
# 1 A25325 A5634 A765436 A232
# 2 A3255 A35674 A5353 A474
# 3 A3453 A632 A5464 A863
# 4 A5543 A656 A8768 A684
apply(listB, 2, function(x) {sum(x %in% listA)})
b1 b2 b3 b4
1 0 0 0