【问题标题】:L1: mixed animals + L2: mixed animals = L3: rabbits (only)L1:混合动物 + L2:混合动物 = L3:兔子(仅限)
【发布时间】:2014-01-01 22:29:59
【问题描述】:

有两个列表,L1 和 L2,包含由硬回车分隔的数千行。

L1 中的某些行在 L2 中不存在并且对这项工作毫无用处。

L1 和 L2 中有一些共同的(重复的)行也是无用的,应该删除。

L2 中有一些行没有包含在 L1 中:这些是请求。

试图合并,比较差异,但输出混合。

L1: D C

L2: C 回复

L3: 回复

【问题讨论】:

    标签: r merge compare diff


    【解决方案1】:

    查看 setdiff 命令:

    L1= c("D","C")
    L2= c("C","R")
    L3 = setdiff(L2,L1)
    

    【讨论】:

    • 我使用了 Diff L1 L2 因为我不能完全使用回复中的指令,所以输出是五倍大,有数千个重复和间歇 (---) 字母“D,C, R" 不是真实的。我试图以它们为例...(C ats 和 D ogs 都在 L1 和 L2 中;但 R abbits 仅在 L2 中。而 L1 中不存在的单词是目标(您能否在解决方案中再次帮助我?
    • 您使用的是 setdiff(L2,L1) 而不是 setdiff(L1,L2) 吗?此外,如果您在 L2 中有不在 L1 中的重复项并想要删除它们:unique(setdiff(L2,L1)),下面的答案是:unique(L2[!L2 %in% L1])
    • 该行是:setdiff(L1.txt,L2.txt) :-bash: syntax error near unexpected token `L1.txt,L2.txt'
    • 您在命令提示符下输入这个...要启动 R,只需在提示符下输入“R”(如果它不存在,您可以从 www.r-project.org 安装它)。你真的应该看看 R 的介绍。一旦你进入 R 控制台,输入以下内容:L1=scan("L1.txt",what=character()); L2=scan("L2.txt",what=character()); L3=setdiff(L2,L1); print(L3)
    • 'R' 没有安装在这里,我会下载。我在终端迷路了!感谢您的时间、耐心和建议。让我在未来分享结果。
    【解决方案2】:

    您还可以在 %in% 之前使用非 (!) 来索引 L2:

    L1= c("D","C")
    L2= c("C","R")
    L2[!L2 %in% L1]
    
    #[1] "R"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多