这是一个相当简单的问题.但我找不到每个google/stackexchange的答案,并查看magrittr的文档.如何提供通过%>%连接的函数链的结果来创建向量?
我看到大多数人做的是:
a <-
data.frame( x = c(1:3), y = (4:6)) %>%
sum()
Run Code Online (Sandbox Code Playgroud)
但是还有一个解决方案,我可以将结果管道链接到一个对象,也许是别名或类似的东西,有点像这样:
data.frame( x = c(1:3), y = (4:6)) %>%
sum() %>%
a <- ()
Run Code Online (Sandbox Code Playgroud)
这将有助于将所有代码保持在相同的逻辑中,将结果输送到"管道下方".
G. *_*eck 23
试试这个:
data.frame( x = c(1:3), y = (4:6)) %>% sum -> a
Run Code Online (Sandbox Code Playgroud)
Joh*_*aul 13
你可以这样做:
data.frame( x = c(1:3), y = (4:6)) %>%
sum %>%
assign(x="a",value=.,pos=1)
Run Code Online (Sandbox Code Playgroud)
有几点需要注意:
您可以使用 "." 告诉magrittr哪个参数被提出属于哪个.默认情况下它是第一个,但在这里我用它.来表示我想要它在第二个value参数中.
其次,我必须使用该pos=1参数在全局环境中进行分配.
您还可以使用<<-运算符:
data.frame( x = c(1:3), y = (4:6)) %>%
sum() %>%
`<<-`(a,.)
Run Code Online (Sandbox Code Playgroud)
编辑:我认为约翰·保罗(John Paul)是最安全的建议,您可以继续使用链进行部分结果的不同分配。例如:
data.frame( x = c(1:3), y = (4:6)) %>%
sum %>%
assign(x="a",value=., pos=1) %>%
exp %>%
assign(x="b",value=., pos=1) %>%
sqrt %>%
assign(x="c", value=., pos=1)
Run Code Online (Sandbox Code Playgroud)
这将正确地创建a,b和c。