![](/img/trans.png)
[英]How to use base::rowSums() with dplyr/magrittr pipe (%>%)
[英]use magrittr pipe within closures
1讓我們看一下這個例子:
1:3 %>% rep(.,2) + 1 %>% sum #[1] 2 3 4 2 3 4
[2] R正在做的是:
1:3 %>% rep(.,2) + (1 %>% sum)
[3]我想要R做的是:(這給出了一個錯誤),我喜歡在那里得到18
。
1:3 %>% (rep(.,2) + 1) %>% sum #Error in rep(., 2) : attempt to replicate an object of type 'closure'
[4]所以我需要超級跛腳:
tmp <- 1:3 %>% rep(.,2) + 1
tmp %>% sum #[1] 18
我如何解決[3]工作。 有人可以解釋我的錯誤信息嗎?
從這里開始
請注意,%>%左側的變量x將作為右側函數中的第一個參數應用。 可以使用更改此默認行為。 這被稱為占位符。
但是,要記住的一件重要事情是。 在嵌套表達式中出現,仍然應用第一個參數規則。 但是使用花括號{}可以抑制此行為
有趣的是,我不知道的是:
這是平等的:
1:3 %>% sum(rep(.,3)) #[1] 24
1:3 %>% sum(.,rep(.,3)) #[1] 24
這兩者是平等的:
1:3 %>% {sum(rep(.,3))} #[1] 18
1:3 %>% rep(.,3) %>% sum #[1] 18
> packageVersion("magrittr")
[1] ‘1.5’
這個:
?'%>%'
給:(我不知道我的%>%運算符背后是什么包,我不太喜歡說實話)
在以下包中找到有關主題'%>%'的幫助:
管道操作員(在庫C:/ Program Files / R / R-3.3.2 /庫中的包tidyr)magrittr forward-pipe操作符(在庫C:/ Program Files / R / R-3.3.2 /庫中的包magrittr中) )管道運算符(在庫C中的包stringr中:/ Program Files / R / R-3.3.2 / library)從其他包導出的對象(在庫C的包dplyr中:/ Program Files / R / R-3.3.2 /圖書館)
二元運算符+
正在創建問題。 它的優先級低於管道(參見?Syntax
)。 在匯總到sum之前將整個操作括在括號中,或者使用+
的函數形式:
(1:3 %>% rep(.,2) + 1) %>% sum
[1] 18
1:3 %>% rep(.,2) %>% `+`(1) %>% sum
[1] 18
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.