簡體   English   中英

如何在dplyr / magrittr管道中使用base :: rowSums()(%>%)

[英]How to use base::rowSums() with dplyr/magrittr pipe (%>%)

我試圖使用管道來回答每行中少於5個字段。 它以以下形式工作(不帶管道):

rowSums(   iris[,1:4]  < 5  ) # works!

但是,嘗試使用管道問相同的問題是行不通的:

iris[1:5,1:4] %>%  rowSums(  . <5  ) # wrong: returns the total rowsum
iris[,1:4] %>%  rowSums(   < 5  )   # does not work either.

EDIT1: 變通辦法由用戶docendo discimus“解決了這個:

iris %>% mutate(sumVar = rowSums(.[1:4]<5))

Edit2 :我更喜歡'docendo discimus'的解決方法,因為它避免了嵌套的括號:

iris %>%
  slice(1:5) %>%

  select(1:4) %>%

  dplyr::mutate( "New_var" = 10 ) %>% dplyr::mutate( "sumvar" = rowSums(. < 5 ) ) 

雖然以下解決方案(AFAICS)需要嵌套括號才能工作(而且我無法弄清楚如何使新列在數據幀上發生突變)

(iris %>%
   slice(1:5) %>%

   select(1:4) %>%

   dplyr::mutate( "New_var" = 10 )  < 5 )  %>% rowSums(.)
iris[1:5, 1:4] %>% is_less_than(5) %>% rowSums
# 1 2 3 4 5 
# 3 4 4 4 3 

magrittr (在不需要相當於dplyr這里)

rowSums(iris[1:5, 1:4] < 5)  
# 1 2 3 4 5 
# 3 4 4 4 3 

暫無
暫無

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

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