I am trying to use dplyr::mutate_each with some external functions without attaching the actual libraries
dplyr::tbl_df(iris) %>% dplyr::mutate_each(dplyr::funs(stringi::stri_trim_both))
but it does not work with the following error:
Error: unsupported type for column "Sepal.Length" (CLOSXP, classes = function)
When I use data.table instead of data.frame :
Error in `.data.table` (` _dt`, `: =` (Sepal.Length, stringi :: stri_trim_both) :: The assignment RHS is not NULL, not an atomic vector (see Is.atomic), not a column list.
If I use a local variable as shown below, everything works as expected.
trim_both <- stringi::stri_trim_both dplyr::tbl_df(iris) %>% dplyr::mutate_each(dplyr::funs(trim_both))
This is not an optimal solution, but I can live with it. However, I would be grateful for an explanation of what is the source of the problem.
Session Information:
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 : this problem is no longer encountered in dplyr 0.7.2.
source share