[英]Error in magrittr pipe when using ``magrittr::`%>%` ``
無論出於何種原因,我被打magrittr
管語法,和整個發生,當你明確
的范圍
限定在調用一個奇怪的錯誤來了%>%
我知道使用下面的語法破壞了管道的目的,但我很好奇為什么會發生錯誤。
對sum
的第一次調用按預期工作並輸出1
。
第二個調用導致錯誤: Error in pipes[[i]] : subscript out of bounds
。
library(magrittr)
`%>%`(1,sum())
magrittr::`%>%`(1,sum())
查看管道的源代碼我認為錯誤的原因與操作環境的第一行有關,但我確定它引入了什么問題。
function (lhs, rhs) {
parent <- parent.frame()
env <- new.env(parent = parent)
chain_parts <- split_chain(match.call(), env = env)
誰能解釋這種行為?
管道參數(%>%,%$%等等)實際上都與magrittr中的pipe()
函數相同。 函數的第一件事就是使用內部的非導出函數split_chain
將調用拆分為其組成部分。
split_chain()
獲取調用的第一個元素(使用的函數,在本例中為一個管道運算符),並通過另一個名為is_pipe()
內部非導出函數運行它,如下所示:
function(pipe)
{
identical(pipe, quote(`%>%`)) ||
identical(pipe, quote(`%T>%`)) ||
identical(pipe, quote(`%<>%`)) ||
identical(pipe, quote(`%$%`))
}
如果這不會返回true,則函數退出返回缺少管道類型的列表和導致問題的參數的右側。 在作用域時,la magrittr::'%>%'
調用的第一部分包括顯式作用域,因此它不能通過這些硬編碼檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.