1
写入时功能的环境中,如果它被赋予一个data.table的名字下面的函数会工作可以这样调用:当写我自己的功能,我怎么能“继承”的data.table
library(data.table)
irisDT <- data.table(iris)
myDelta(irisDT)
然而,这有几个问题:
- 分配输出到一个新的对象将工作,BU t原来被修改的地方,所以这可能是一个尴尬的副作用
- 我不假设(虽然我没有测试过),这是使用所有数据中的最好的。桌面花式色牢度
- 这没有使用'data.table方式',这将更多
irisDT[, myDelta()]
,但是因为它期望DT参数是data.table,所以我通过编写irisDT[, myDelta(irisDT)]
来重复自己。
明确,我想知道: 我缺少什么写功能,这使他们能够从他们被称为中,而不必从提供的data.table对象data.table对象继承函数参数
另外我很好奇: 在这种用例中,编写一个可以从内部或外部调用data.table对象的函数是一种最佳实践,其目标是计算对象中现有列的输出列。你只写一个或另一个?
虽然我可能会完全倒退,如果有的话请让我知道。
我不明白你究竟在问什么。你的目标是什么?让你的功能正常工作,但不改变输入? – Roland
我的功能正如我期望的那样工作,但是,我觉得我写得很糟糕。我对data.table的理解是,你调用函数来修改'[i,j,by,等....]'的j参数内的表。例如我可以通过'IrisDT [,sum(Sepal.Width)''调用'Sepal.Width'列,但不在'sum()'中写表名,但是,对于我以上的函数不起作用。 'irisDT [,myDelta()]'给出myDelta()中的错误:参数“DT”丢失,没有默认值。我希望我的函数在data.table中使用时不必重新指定表名。 – DaveRGP
请注意'sum'如何不分配列。你不能在引用data.table的时候在函数内部使用':='(或'set')。 – Roland