Tôi muốn hiểu tại sao, trong gói dplyr
hoặc magrittr
, và cụ thể hơn chức năng chaining %>%
có một số rắc rối với các nhà khai thác cơ bản +
, -
, *
, và /
khai thác chuỗi số học trong dplyr với%>% ống
Chaining mất đầu ra của tuyên bố trước đó và ăn nó như là đối số đầu tiên của tiếp theo:
1:10 %>% sum
# [55]
như vậy làm thế nào mà điều này không làm việc
1:10 %>% *2 %>% sum
1:10 %>% .*2 %>% sum
Tôi cũng thấy rằng cú pháp sau hoạt động để thêm/trừ, nhưng không nhân hoặc chia. tại sao như vậy?
1:10 %>% +(2) # works OK
1:10 %>% *(2) # nope...
Vì vậy, tôi nên viết chức năng ẩn danh ngay cả khi thực hiện thao tác *2
trên data.frame của tôi?
1:10 %>% (function(x) x*2) %>% sum
Cảm ơn, tôi không thể tìm thấy câu trả lời trong SO câu hỏi khác.
Bạn muốn sử dụng gói 'magrittr' ở đây thay vì dplyr. dplyr chỉ để làm việc với data.frames trong khi toán tử đường ống ('%>%') ban đầu là từ magrittr. –
Chỉ cần thêm chúng bình thường? – stanekam
Giải thích về hành vi này: cộng và trừ chỉ hoạt động ở đây vì trình phân tích cú pháp xem chúng là toán tử cộng và trừ đơn nhất, như trong '-2'. Cú pháp hợp lệ của nó. Vì vậy, nó phân tích không sao ở đây, và sau đó magrittr được làm việc mangling đánh giá vào một biểu thức nhị phân '" - "(x, 2)'. Không có chức năng '*' hoặc '/' đơn nhất nào, vì vậy các op đó thất bại. Khi được trích dẫn, chúng trở thành cú pháp hợp lệ một lần nữa và chức năng tương ứng được nhận. – Spacedman