【发布时间】:2015-04-23 14:14:21
【问题描述】:
我正在尝试将dplyr::mutate_each 与一些外部函数一起使用而不附加实际库
dplyr::tbl_df(iris) %>%
dplyr::mutate_each(dplyr::funs(stringi::stri_trim_both))
但它失败并出现以下错误:
错误:列“Sepal.Length”的类型不受支持(CLOSXP,类 = 函数)
当我使用data.table 而不是data.frame 时:
`[.data.table`(`_dt`, , `:=`(Sepal.Length, stringi::stri_trim_both), 中的错误: 赋值的 RHS 不是 NULL,不是原子向量(参见 ?is.atomic),也不是列表列。
如果我使用下面的局部变量,一切都会按预期工作。
trim_both <- stringi::stri_trim_both
dplyr::tbl_df(iris) %>% dplyr::mutate_each(dplyr::funs(trim_both))
这不是最佳解决方案,但我可以接受。不过,我将不胜感激解释问题的根源是什么。
会话信息:
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
注意:dplyr 0.7.2 中不再出现此问题。
【问题讨论】:
标签: r namespaces dplyr