簡體   English   中英

理解magrittr pipe`%>%`語法的正確使用

[英]Understanding the correct use of magrittr pipe `%>%` syntax

我有一個命名的數字向量,我試圖將每個元素除以所有元素的總和。 然后我想使用符號signif舍入到有效數字。 這很容易做到“老派”,通過計算除法並存儲變量,然后使用存儲的變量來計算有效數字。 但是,如果我嘗試 pipe 直接使用magrittr pipe 運算符( %>% )進行計算, signif並沒有真正對向量做任何事情。

我試圖了解區別是什么,因為我經常遇到與基本 R 函數結合使用的管道問題。

這是一個示例,使用 output 我得到:

> # My named vector
> v <-setNames(c(1:5), letters[1:5])

> # Dividing each element by the total sum and rounding to significant figures
> a <- v/sum(v)
> a <- signif(a, digits = 3)

> # Dividing each element by the total sum and piping directly to signif()
> b <- v/sum(v) %>% signif(digits = 3)

> a
> b

a: 1   b: 2   c: 3   d: 4   e: 5

a: 0.0666666666666667 b: 0.133333333333333 c: 0.2 d: 0.266666666666667 e: 0.333333333333333

遵循@akrun 的提示: ?Syntax has

  ‘%any% |>’         special operators (including ‘%%’ and ‘%/%’) 
       ‘* /’              multiply, divide         

表明 pipe 運算符的優先級高於/ ,因此您的表達式有效

v/(sum(v) %>% signif(digits = 3))

添加括號將有所幫助:嘗試

(v/sum(v)) %>% signif(digits = 3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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