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

iqjalb3h  于 2023-03-20  发布在  其他
关注(0)|答案(2)|浏览(146)

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

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

以R为底的i会这样做

which(x == "peach")

但是由于我的x在管道的末端,我想用magrittr的方法得到索引。

x %>% getIndex("peach")

我想要的输出是3。

qcuzuvrc

qcuzuvrc1#

您可以使用点(.)来引用管道的左侧(lhs)。有两种情况可供参考:
1.您希望使用lhs作为不在第一个位置的参数。常见的示例是使用data参数:

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

在这种情况下,margrittr不会将lhs注入到第一个参数中,而只会注入到标记为.的参数中。
1.你不想把lhs作为一个函数参数,而是作为表达式的一部分,这就是你的情况!在这种情况下,magrittr仍然会把lhs作为第一个参数注入,你可以用花括号({)取消它。
因此,您需要使用.符号和{大括号:

x %>% { which(. == "peach") }

[1] 3

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

zyfwsgd6

zyfwsgd62#

或者简单地说:

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

相关问题