标签: set-difference

似乎无法理解"列表差异"(\\)运算符

(\\)在Haskell中听到了"列表差异" 运算符这个术语,但仍然不知道如何理解它.任何例子或想法?

haskell element list set-difference

5
推荐指数
2
解决办法
2563
查看次数

在R中找到对称差异(交叉点的对面)的函数?

问题

我有两个不同长度的字符串向量.每个向量都有一组不同的字符串.我想找到一个向量但不在两个向量中的字符串; 也就是说,对称差异.

分析

我查看了函数setdiff,但其输出取决于向量的考虑顺序.我发现自定义函数outersect,但是这个函数要求两个向量具有相同的长度.

有什么建议?

更正

这个问题似乎与我工作的数据有关.否则,下面的答案解决了我在这篇文章中提到的问题.我会看看我的数据有什么独特之处,如果我学到任何可能对其他用户有帮助的东西,我会回复.

r xor set-difference intersect symmetric-difference

5
推荐指数
2
解决办法
3286
查看次数

数组差异作为一系列动作

简而言之:我有两个可能不同的数组,我希望将差异/转换作为一系列"动作"(添加和删除).也就是说,在一个基本的例子中:

Current: [a, b, d]
Desired: [a, b, c, d]
Actions: Add c in position 2
Run Code Online (Sandbox Code Playgroud)

基本上,指令是如何转换当前数组,以便它具有与所需数组相同的成员和顺序.对于我的应用程序,每个更改都会触发更新UI等的事件,因此如果操作不是"冗余"的话,这将是非常可取的:也就是说,上面可能已经存在remove d, add c @ 2, add d @ 3,但这会导致其他地方的大量不需要的处理系统.

也许作为另一个可能有助于说明的例子:

Current: [a, b, d]
Desired: [b, c, d, a]
Actions: remove a, add c @ 1, add a @ 3
Run Code Online (Sandbox Code Playgroud)

我认为这是之前已经解决过的问题,但是搜索它有点困难,因为"数组差异"并没有给你正确的结果.

如果重要的话,我在Javascript中实现这个,但我想这个算法是语言无关的.

arrays algorithm array-difference set-difference

5
推荐指数
1
解决办法
135
查看次数

捕获 R 中两个数据帧之间的匹配和不匹配值

我已经阅读了很多这方面的内容,但我还没有得到有效的答案。

我一直在使用setdiffR 中的函数来查看两个数据帧之间的匹配数。我知道 200 个观察结果中有 71 个匹配,其余的不匹配。

到目前为止,我刚刚这样做是为了获取匹配和不匹配值的数量:

check = setdiff(dataset1$variable1, dataset2$variable1)
Run Code Online (Sandbox Code Playgroud)

如何返回匹配和不匹配值的列表?

谢谢,

埃德

compare r set-difference

5
推荐指数
1
解决办法
7571
查看次数

在两个无序字符向量之间执行非成对的全部比较 --- intersect 的相反 --- 全部到全部 setdiff

示例数据

\n\n
v1 <- c("E82391", "X2329323", "C239923", "E1211", "N23932", "F93249232", "X93201", "X9023111", "O92311", "9000F", "K9232932", "L9232932", "X02311111")\nv2 <- c("L9232932", "C239923", "E1211", "E82391", "F93249232", "U82832")\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题

\n\n

我只想提取其中一个向量中的项目,而不是另一个向量中的项目。

\n\n

据我所知,setdiff无法比较两个无序字符向量并找到两者之间的所有差异。

\n\n

例如,是否%in%在两个字符向量之间执行全面比较?

\n\n

在这种情况下,它确实有效(尽管它不报告那些位于v2和不位于 中的元素v1)。

\n\n
> v1[!v1 %in% v2]\n[1] "X2329323"  "N23932"    "X93201"    "X9023111"  "O92311"    "9000F"     "K9232932"  "X02311111"\n
Run Code Online (Sandbox Code Playgroud)\n\n

另一种方法是使用用户定义的函数,其名称outersect如下所示,它显示了所有差异。

\n\n
outersect <- function(x, y) {\n  sort(c(x[!x%in%y],\n         y[!y%in%x]))\n}\n\noutersect(v1,v2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题

\n\n

我真的很想知道是否有任何 R 函数可以轻松地在两个字符向量之间执行全面比较!这个想法是为了真正提高代码的可读性(特别是当有数十个向量需要相互比较时)。

\n\n

执行这种全面比较的最安全、最有效的方法是什么?更具体地说,R 中是否有一个函数可以

\n\n …

r vector set-difference intersect

5
推荐指数
1
解决办法
170
查看次数

Python集:difference()vs symmetric_difference()

python 集合中的difference()symmetric_difference()方法之间有什么区别?

python set-difference symmetric-difference

5
推荐指数
2
解决办法
5033
查看次数

两个数字向量上的全对全 setdiff 具有用于接受匹配的数字阈值

我想要做的或多或少是以下两个线程中讨论的问题的组合:

我有两个数字向量:

b_1 <- c(543.4591, 489.36325, 12.03, 896.158, 1002.5698, 301.569)
b_2 <- c(22.12, 53, 12.02, 543.4891, 5666.31, 100.1, 896.131, 489.37)
Run Code Online (Sandbox Code Playgroud)

我想将所有元素b_1与所有元素进行比较b_2,反之亦然。

如果element_ib_1等于任意数量的范围 element_j ± 0.045b_2element_i必须报告。

同样地,如果element_jb_2NOT等于任何数目的范围 element_i ± 0.045b_1element_j必须报告。

因此,基于上面提供的向量的示例答案将是:

### based on threshold = 0.045
in_b1_not_in_b2 <- c(1002.5698, …
Run Code Online (Sandbox Code Playgroud)

compare r vector set-difference

5
推荐指数
1
解决办法
336
查看次数

c ++列表在设置差异后不调整大小

考虑以下代码:

#include <algorithm>
#include <iostream>
#include <list>

int main() {
    std::list<int> v = {1, 3, 4};
    std::cout << v.size() << std::endl;
    v.resize(0);
    std::cout << v.size() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

编译输出后,如预期的那样,是

3
0
Run Code Online (Sandbox Code Playgroud)

现在我添加一组差异。

#include <algorithm>
#include <iostream>
#include <list>

int main() {
    std::list<int> x = {1, 3, 4};
    std::list<int> y = {1, 2, 3, 5};
    std::list<int> v;
    x.sort();
    y.sort();
    std::cout << v.size() << std::endl;
    auto it =
        std::set_difference(x.begin(), x.end(), y.begin(), y.end(), v.begin());
    std::cout << v.size() << std::endl;
    v.resize(0);
    std::cout << v.size() …
Run Code Online (Sandbox Code Playgroud)

c++ set-difference

5
推荐指数
1
解决办法
48
查看次数

haskell中的列表中是否存在差异Ord运算符?

我想在2个整数列表之间设置差异,这允许在haskell中重复.

因此,如果有[1,2,1,4,3] [1,2,4],差异将是[1,3]

目前我可以通过普通\\运营商来做到这一点listA \\ listB.

但问题是这个问题太慢了.由于整数在ord组中,因此可以更快地完成.

我知道这个Data.Multiset模块可以更快地完成它,但是在没有Data.Multiset模块的列表上有没有本地方法呢?

haskell set-difference

4
推荐指数
1
解决办法
365
查看次数

矢量差异,同时保留顺序

我有两个char载体说{'G', 'K', 'A', 'L', 'P'}{'K', 'P', 'T', 'M'}.我必须在保留顺序的同时得到这两个向量之间的差异{'G', 'A', 'L'}.

我知道std::set_difference函数但不能使用,因为这将需要对向量进行排序.有没有优化的方法在C++中执行此操作?

c++ string vector set-difference c++11

4
推荐指数
1
解决办法
256
查看次数