簡體   English   中英

使用``magrittr ::`%>%```時magrittr管道出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM