我正在尝试使用一个名为的新 R 包waldo https://github.com/r-lib/waldo (也请参阅 tidyverse 博客 https://www.tidyverse.org/blog/2020/10/waldo/)旨在比较数据对象以查找差异。这waldo::compare()
函数返回一个对象,根据文档:
具有“waldo_compare”类的字符向量
此函数的主要目的是在控制台中使用,利用着色功能突出显示数据对象之间不相等的突出值。然而,虽然仅在控制台中检查是有用的,但我确实想获取这些值并对它们采取行动(从数据中过滤掉它们等)。因此,我想以编程方式提取突出的值。我不知道怎么办。
Example
- 生成长度为 10 的向量:
set.seed(2020)
vec_a <- sample(0:20, size = 10)
## [1] 3 15 13 0 16 11 10 12 6 18
- 创建一个重复向量,并添加附加值 (
4
) 到第 11 个向量元素。
vec_b <- vec_a
vec_b[11] <- 4
vec_b <- as.integer(vec_b)
## [1] 3 15 13 0 16 11 10 12 6 18 4
- Use
waldo::compare()
测试两个向量之间的差异
waldo::compare(vec_a, vec_b)
## `old[8:10]`: 12 6 18
## `new[8:11]`: 12 6 18 4
The beauty is that it's highlighted in the console:
但现在,我如何提取不同的值?
我可以尝试分配waldo::compare()
到一个对象:
waldo_diff <- waldo::compare(vec_a, vec_b)
然后什么?当我尝试做的时候waldo_diff[[1]]
I get:
[1] "`old[8:10]`: \033[90m12\033[39m \033[90m6\033[39m \033[90m18\033[39m \n`new[8:11]`: \033[90m12\033[39m \033[90m6\033[39m \033[90m18\033[39m \033[34m4\033[39m"
and for waldo_diff[[2]]
更糟糕的是:
waldo_diff 中的错误[3 https://i.stack.imgur.com/a19yI.png] : 下标越界
知道如何以编程方式提取出现在“新”向量中但不在“旧”向量中的突出值吗?