我想要向量 x 中元素的索引
x <- c("apple", "banana", "peach", "cherry")
Run Code Online (Sandbox Code Playgroud)
有了基础 R 我会这样做
which(x == "peach")
Run Code Online (Sandbox Code Playgroud)
但由于我的 x 位于管道的末端,我想以 magrittr 的方式获取索引。
x %>% getIndex("peach")
Run Code Online (Sandbox Code Playgroud)
我想要的输出是3。
您可以使用点 ( ) 来引用管道的左侧 (lhs) .。有两种情况:
您想要使用 lhs 作为不在第一个位置的参数。一个常见的例子是使用参数data:
mtcars %>% lm(mpg~cyl, data = .)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,margrittr不会将 lhs 注入到第一个参数中,而只会注入到标有 的参数中.。
magrittr,仍将注入 lhs 作为第一个参数。您可以使用花括号 ( {) 取消该操作。所以你需要使用.带大括号的表示法{:
x %>% { which(. == "peach") }
[1] 3
Run Code Online (Sandbox Code Playgroud)
排除{会导致尝试运行等效的which(x, x == "peach"),从而产生错误。