使用magrittr piper运算符,我们对向量执行操作 .
strings <- "a b c"
strings %>% strsplit(" ") # Here we get a list
> strings %>% strsplit(" ")
[[1]]
[1] "a" "b" "c"
但是我们假设我们只想得到这个列表中的单个元素 . 这需要我们(例如获得第一个元素):
(strings %>% strsplit(" "))[[1]][1] # Notice the braces around the expression..
现在我的问题是:有没有办法使用管道操作符而不需要将整个表达式放在括号中?我认为,如果我们不必将其写入临时变量或使用括号但使用某种特殊的管道运算符,那将更加透明 .
还有另一种方法吗?
5 回答
或者:
strings %>% strsplit(" ") %>% { .[[1]][1] }
这将是相同的
strings %>% strsplit(" ") %>% .[[1]] %>% .[1]
比较时间:
您可以使用
purrr
包中的map_*()
函数:*
指的是您想要输出的类型,1
指的是列表中的位置 .此选项可用于向量
我们可以做的
您可以在
unlist
之后使用extract
这样的列表:希望这可以帮助!
这是100%的magrittr方式:
extract
只是[
的别名,extract2
是[[
的别名,所以你也可以这样做:虽然在大多数情况下,这种形式通常更具可读性: