当前位置: 首页 > 知识库问答 >
问题:

在我自己的包中使用Data.Table包

寿阳华
2023-03-14

我试图在我自己的包中使用data.table包。MWE如下:

test.fun<-function ()
{
    library(data.table)
    testdata<-data.table(A=rep(seq(1,5), 5), Val=rnorm(25))
    setkey(testdata, A)
    res<-testdata[,{list(Ct=length(Val),Total=sum(Val),Avg=mean(Val))},"A"]
    return(res)
}
> res<-test.fun()
data.table 1.8.0  For help type: help("data.table")
> res
     A Ct      Total        Avg
[1,] 1  5 -0.5326444 -0.1065289
[2,] 2  5 -4.0832062 -0.8166412
[3,] 3  5  0.9458251  0.1891650
[4,] 4  5  2.0474791  0.4094958
[5,] 5  5  2.3609443  0.4721889
> library(testpackage)
> res<-test.fun()
data.table 1.8.0  For help type: help("data.table")
Error in `[.data.frame`(x, i, j) : object 'Val' not found

共有1个答案

齐英朗
2023-03-14

安德烈的猜测是对的,+1。它有一个FAQ(请参见小插曲(“datatable-faq”)),以及一个关于导入data.table的新小插曲:

常见问题6.9:我创建了一个依赖于data.table的包。我如何确保我的包是Data.Table感知的,以便从Data.Frame继承工作?

i)在描述文件的depends:字段中包含data.table,或者在描述文件的imports:字段中包含data.table,在命名空间文件中包含import(data.table)

这也是为什么data.table继承过去不能与无名称空间的包兼容,以及为什么在用户请求时,我们必须要求此类包的作者为其包添加一个名称空间以使其兼容。令人高兴的是,现在R为缺少一个名称空间的包添加了一个默认名称空间(从V2.14.0开始),这个问题已经消失了:

R Version2.14.0
*所有包都必须有一个命名空间,如果源代码中没有提供,则在安装时创建一个命名空间。

 类似资料:
  • 我有一个python应用程序要测试。此应用程序正在导入许多包,例如: 其中mypackage是我自己的包。 当我开始应用程序时,一切正常。然而,一旦我试图运行毒物测试它,我就会得到以下错误: 我知道tox无法安装mypackage依赖项,因为它不在pip中。您知道如何在此类应用程序上运行tox,或者如何使用tox安装自己的软件包吗? 我的tox.ini文件内容:

  • 问题内容: 如何在自己的Python包中“嵌入” Python库? 以Requests库为例。我如何将其集成到我自己的程序包中,目的是允许我在不同的计算机上运行应用程序而无需实际在每个计算机上安装请求,而是将其与程序包放在同一文件夹中? 这有可能吗? 问题答案: 如果它是纯python库(无编译模块),则只需将其放在项目中的文件夹中,然后将该文件夹添加到模块搜索路径中即可。这是一个示例项目: ap

  • 是否可以不仅在WebElement中使用@findby,而且在我自己的类中也使用@findby? 我想有我的类用于与页面元素合作,并在其中重写WebElement接口的一些方法。 但我发现了错误: 您能告诉我重写WebElement方法并使用我的.isdispalyed()方法的正确方法吗?我想继续使用@findby注释。

  • 我想演示/记录一些行为。我希望记录对和的每个调用(不管它们是成功还是必须阻止)。最初,由于那些方法不是,我尝试用以下方式包装标准的,而不是使用继承: 忽略在多个线程中调用时,调用可能会产生损坏的输出。 然后,我想检查一个简单的示例的输出,例如: 问题是它不能编译,因为显然要求用常规的实例化相应的,而我试图将它与自己的一起使用。 有没有办法记录一个标准互斥体的锁定和解锁的内部使用情况?或者是否有方法

  • 我在Python文件中定义了几个类。我知道我可以将它导入到给定的脚本中,只要该文件与我的脚本位于同一目录中;但是,我希望能够将该文件作为软件包安装,这样我就可以导入它,而不必每次使用它时都将其放在当前目录中。 本质上,有没有一种方法来pip安装你自己编写的包,这样它就可以在Python脚本中导入,而不存在于与脚本相同的目录中?

  • 问题内容: 我想使用自己的密钥使用AES加密字符串。但是我在密钥的位长上遇到了麻烦。你能否查看我的代码并查看我需要修复/更改的内容。 现在,我得到一个异常“ 无效的AES密钥长度:86个字节 ”。我需要垫我的钥匙吗?我该怎么办? 我还需要为ECB或CBC设置任何内容吗? 问题答案: 如注释中所写,旧代码不是“最佳实践”。你应该使用像PBKDF2这样的密钥生成算法,并且迭代次数很高。你还应该至少部分