Dưới đây là một khung dữ liệu chứa một cột id người dùng:Tại sao hàm digest trả về cùng một giá trị mỗi khi được sử dụng với đột biến của dplyr?
> head(df)
uid
1 14070210
2 14080815
3 14091420
Vì lợi ích của lập luận, tôi muốn tạo một cột mới có chứa căn bậc hai của các user id, và một cột mới có chứa một hash của id người dùng. Vì vậy, tôi làm điều này:
df_mutated <- df %>%
mutate(sqrt_uid = sqrt(uid), hashed_uid = digest(uid))
... trong đó digest() đến từ gói phân hủy.
Trong khi căn bậc hai có vẻ hoạt động, hàm digest trả về cùng một giá trị cho mỗi id người dùng.
> head(df_mutated)
uid sqrt_uid hashed_uid
1 14070210 3751.028 f8c4b39403e57d85cd1698d2353954d0
2 14080815 3752.441 f8c4b39403e57d85cd1698d2353954d0
3 14091420 3753.854 f8c4b39403e57d85cd1698d2353954d0
Điều này thật lạ với tôi. Không có dplyr, hàm digest() trả về các giá trị khác nhau cho các đầu vào khác nhau. Tôi không hiểu gì về dplyr?
Cảm ơn
tuyệt vời, cảm ơn bạn rất nhiều. Tôi đến từ python/gấu trúc và vì vậy tôi bằng cách nào đó giả định rằng mutate() làm việc giống như phương thức .apply() của gấu trúc, trong đó hàm được truyền sẽ hoạt động trên từng phần tử riêng lẻ. – csaid
Câu trả lời hay. Tôi vừa thêm ý tưởng 'vdigest <- Vectorize (digest)' vào trang trợ giúp cho 'digest'. –