【发布时间】:2014-01-01 22:29:59
【问题描述】:
有两个列表,L1 和 L2,包含由硬回车分隔的数千行。
L1 中的某些行在 L2 中不存在并且对这项工作毫无用处。
L1 和 L2 中有一些共同的(重复的)行也是无用的,应该删除。
L2 中有一些行没有包含在 L1 中:这些是请求。
试图合并,比较差异,但输出混合。
L1: D C
L2: C 回复
L3: 回复
【问题讨论】:
有两个列表,L1 和 L2,包含由硬回车分隔的数千行。
L1 中的某些行在 L2 中不存在并且对这项工作毫无用处。
L1 和 L2 中有一些共同的(重复的)行也是无用的,应该删除。
L2 中有一些行没有包含在 L1 中:这些是请求。
试图合并,比较差异,但输出混合。
L1: D C
L2: C 回复
L3: 回复
【问题讨论】:
查看 setdiff 命令:
L1= c("D","C")
L2= c("C","R")
L3 = setdiff(L2,L1)
【讨论】:
unique(setdiff(L2,L1)),下面的答案是:unique(L2[!L2 %in% L1])
L1=scan("L1.txt",what=character()); L2=scan("L2.txt",what=character()); L3=setdiff(L2,L1); print(L3)
您还可以在 %in% 之前使用非 (!) 来索引 L2:
L1= c("D","C")
L2= c("C","R")
L2[!L2 %in% L1]
#[1] "R"
【讨论】: