2015-04-21 16 views
17

Vì vậy, nếu người ta muốn áp dụng một dòng hoạt động bởi hàng trong dplyr, người ta có thể sử dụng rowwise chức năng, ví dụ: Applying a function to every row of a table using dplyr?Làm thế nào để ngừng sử dụng hàng theo chiều trong dplyr?

Có một chức năng unrowwise mà bạn có thể sử dụng để ngăn chặn làm hàng hoạt động bởi hàng? Hiện tại, có vẻ như thêm group_by sau khi các hoạt động hàng rowwise xóa, ví dụ:

data.frame(a=1:4) %>% rowwise() %>% group_by(a) 
# ... 
# Warning message: 
# Grouping rowwise data frame strips rowwise nature 

Điều này có nghĩa là bạn nên sử dụng group_by(1) nếu bạn muốn xóa rõ ràng rowwise?

+4

Có phải 'ungroup() 'hoạt động không? – r2evans

+0

Tôi đã quay trở lại phần chỉnh sửa tiêu đề vì không rõ ràng với tôi rằng 'rowwise' tạo một' grouped_df'. Ngoài ra, hãy xem vấn đề liên quan này. https://github.com/hadley/dplyr/pull/553 – Alex

Trả lời

23

Như được tìm thấy trong các nhận xét và câu trả lời khác, cách chính xác để thực hiện việc này là sử dụng ungroup().

Các hoạt động rowwise(df) bộ một trong các lớp của dfrowwise_df. Chúng ta có thể thấy các phương pháp trên lớp này bằng cách kiểm tra mã here, mang đến cho các ungroup phương pháp sau đây:

#' @export 
ungroup.rowwise_df <- function(x) { 
    class(x) <- c("tbl_df", "data.frame") 
    x 
} 

Vì vậy, chúng ta thấy rằng ungroup không đúng cách loại bỏ một cấu trúc nhóm, thay vào đó nó chỉ loại bỏ các lớp bổ sung từ rowwise_df chức năng rowwise.

Các vấn đề liên quan