如何删除R语言嵌套列表中各子列表共有的字符元素
错误原因
你之前的操作逻辑失效是因为mylist %in% common_elements判断的是外层列表的子列表整体是否属于共有元素集合,而非遍历每个子列表内部的单个元素做匹配,自然无法得到预期结果。
正确实现代码
你已经通过Reduce(intersect, mylist)正确拿到了所有子列表的共有元素,接下来只需要遍历每个子列表,过滤掉属于共有集合的元素即可,R中可以用lapply完成列表遍历:
# 原列表定义 mylist = list( list("tata","titi","toto","tete"), list("fifi","fafa","toto","fefe"), list("fifi","toto","rere","rara") ) # 计算所有子列表的共有元素 common_elements <- Reduce(intersect, mylist) # 遍历过滤每个子列表 mylist <- lapply(mylist, function(sub_list) { sub_list[!sub_list %in% common_elements] })
运行上述代码后输出mylist即可得到匹配需求的处理结果。
内容的提问来源于stack exchange,提问作者Vesperal
相关产品推荐
相关产品推荐

