0

我正在尝试使用 expss - https://cran.r-project.org/web/packages/expss/vignettes/tables-with-labels.html来完成本文中的一些示例- 但是,我一直在could not find function "setalloccol"使用最基本的交叉表函数crofre两个变量得到错误:

> cro(df$var1, df$var2)
Error in setalloccol(ans) : could not find function "setalloccol"

我正在使用 R Studio 1.2.1335 并且我已经重新安装了包 dplyr、data.table、tidyr 和 expss 本身,但是在所有这些库运行时我似乎仍然遇到这个错误。我已经用谷歌搜索了我想出的确切错误,这绝对是zilch,所以感谢任何帮助......

4

4 回答 4

2

在运行代码之前尝试setalloccol从 data.table 显式导出:

setalloccol = data.table::setalloccol
# further calculations
# cro(df$var1, df$var2)
于 2020-01-28T09:03:30.197 回答
1

'Setalloccol' 是 data.table 中的一个实验性命令,用于通过引用分配内存,以确保比由 ':=' 分配的浅拷贝更稳定。'Expss' 看起来像一个怪物图书馆。我现在不会加载它并追踪您的错误。但由于 'setalloccol' 是一个实验性命令,您应该找到 'expss' 开发人员并提交缺陷。然而,这里已经有一个关于这个确切问题的完整的开放错误报告:https ://github.com/gdemin/expss/issues/42 。data.table 的开发者(“Matt Dowle”)在该错误报告中有评论。在实践中 setalloccol 的工作方式如下:

help(setalloccol)

data.table::truelength(HMR)
[1] 1035
options(datatable.verbose=TRUE)
data.table::setalloccol(HMR,2 * 1035)
data.table::truelength(HMR)
[1] 2081

但对于大多数 data.table 计算来说,这确实不是必需的。尝试倾注“expss”代码并找出他们使用它的原因和时间。对不起,我没有更多帮助。

于 2020-01-28T00:34:30.647 回答
1

对于它的价值,我只是遇到了同样的问题,想给我两分钱。这似乎与加载包的顺序有关,因为“expss”包掩盖了“data.table”包的几个功能,反之亦然。尝试颠倒加载顺序。至少这为我解决了这个问题。

于 2020-11-13T08:44:41.097 回答
1

感谢 rferrisx 提供来自 GitHub 的线程。josie-athens 19 年 11 月 3 日的帖子似乎解决了这个问题,尽管我没有从 Bash 运行 R。所以我的过程是:

  1. 卸载expssdata.table打包:remove.packages(c('expss','data.table'))
  2. 重新安装以上软件包:install.packages(c('data.table','expss'))

这似乎绕过了错误。不完全确定为什么,但希望对遇到同样事情的人有所帮助。

于 2020-01-28T13:39:44.860 回答