Tôi cố gắng để sử dụng dplyr::mutate_each
với một số chức năng bên ngoài mà không cần gắn các thư viện thực tếLàm thế nào để sử dụng chức năng không gian tên với dplyr :: mutate_each?
dplyr::tbl_df(iris) %>%
dplyr::mutate_each(dplyr::funs(stringi::stri_trim_both))
nhưng nó không thành công với lỗi sau:
Error: unsupported type for column 'Sepal.Length' (CLOSXP, classes = function)
Khi tôi sử dụng data.table
thay vì data.frame
:
Error in `[.data.table`(`_dt`, , `:=`(Sepal.Length, stringi::stri_trim_both), : RHS of assignment is not NULL, not an an atomic vector (see ?is.atomic) and not a list column.
Nếu tôi sử dụng biến cục bộ như dưới đây, mọi thứ hoạt động như mong đợi.
trim_both <- stringi::stri_trim_both
dplyr::tbl_df(iris) %>% dplyr::mutate_each(dplyr::funs(trim_both))
Nó không phải là một giải pháp tối ưu nhưng tôi có thể sống với điều đó. Tuy nhiên tôi sẽ biết ơn vì một lời giải thích nguồn gốc của vấn đề là gì.
thông tin Session:
R version 3.1.1 (2014-07-10)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] dplyr_0.4.1
loaded via a namespace (and not attached):
[1] assertthat_0.1 DBI_0.3.1 lazyeval_0.1.10.9000
[4] magrittr_1.5 parallel_3.1.1 Rcpp_0.11.4
[7] stringi_0.4-1 tools_3.1.1
Note: Vấn đề này không còn xảy ra trong dplyr
0.7.2.