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