r语言 - 使用 %>% 运算符获取向量中特定元素的索引



我想要向量 x 中元素的索引

x <- c("apple", "banana", "peach", "cherry")

使用基数R,我会这样做

which(x == "peach")

但是由于我的 x 位于管道的末端,我想以 magrittr 的方式获取索引。

x %>% getIndex("peach")

我想要的输出是 3。

您可以使用点 (.( 引用管道的左侧 (lhs(。有两种情况:

  1. 您希望将 lhs 用作不在第一个位置的参数。一个常见的例子是使用data参数:

    mtcars %>% lm(mpg~cyl, data = .)
    

在这种情况下,margrittr不会将 lhs 注入到第一个参数中,而只会在标有.的参数中注入。

  1. 您希望将 lhs 作为表达式的一部分而不是单个函数参数包含在内。这是你的情况!在这种情况下magrittr仍将注入 lhs 作为第一个参数。您可以使用大括号 ({( 取消它。

因此,您需要使用带有{大括号的.表示法:

x %>% { which(. == "peach") }
[1] 3

排除{将导致尝试运行等效的which(x, x == "peach"),这会产生错误。

或者简单地:

x %>% match(x = "peach")
# [1] 3

(与which()的不同之处在于它只给你第一个匹配项(:

y <- c("apple", "banana", "peach", "cherry", "peach")
y %>% `==`("peach") %>% which()
# [1] 3 5
y %>% match(x = "peach")
# [1] 3

最新更新