这是一个相当简单的问题 . 但我找不到每个google / stackexchange的答案,并查看magrittr的文档 . 如何提供通过%>%连接的函数链的结果来创建向量?
我看到大多数人做的是:
a <-
data.frame( x = c(1:3), y = (4:6)) %>%
sum()
但是还有一个解决方案,我可以将结果管道链接到一个对象,也许是别名或类似的东西,有点像这样:
data.frame( x = c(1:3), y = (4:6)) %>%
sum() %>%
a <- ()
这将有助于将所有代码保持在相同的逻辑中,将结果输送到“管道下方” .
5 回答
试试这个:
你可以这样做:
有几点需要注意:
你可以使用"."告诉
magrittr
被提出的对象属于哪个参数 . 默认情况下它是第一个,但是我在这里使用.
表示我想要它在第二个value
参数中 .其次,我必须使用
pos=1
参数在全局环境中进行赋值 .您也可以使用
<<-
运算符:Edit: 我认为约翰保罗是最安全的建议,你可以继续使用链条做不同的部分结果任务 . 例如:
这将正确创建
a
,_28848611_和c
.使用pipeR的
%>>%
这应该很容易 .pipeR教程可能会有所帮助:http://renkun.me/pipeR-tutorial/作业:http://renkun.me/pipeR-tutorial/Pipe-operator/Pipe-with-assignment.html
我喜欢做什么(我发现这个技巧,我记不住了)是在我的管道末端使用
{.} -> obj
. 这样我只需插入一个新行就可以在链的末尾添加额外的步骤,而不必重新定位到->
赋值运算符 .您也可以使用
(.)
而不是{.}
,但它看起来有点奇怪 .例如,而不是这样:
做这个:
它可以更轻松地查看管道数据的最终位置 . 此外,虽然它不容易添加另一个最后一步,因为您不需要将
->
向下移动到新行,只需在{.}
之前添加一个新行并添加步骤 .像这样:
这不是使用assign()的答案很好,但输入有点长 . 您需要使用
.
,因为数据不是第一个参数,您必须将新参数的名称放在""
中,并指定环境(pos = 1
) . 我似乎很懒,但使用%>%
是关于速度的 .所以我把
assign()
包装在一个小功能中,加快了一点:所以现在你可以这样做: