data.table
एक अद्भुत पैकेज है, जो, अफसोस, checkUsage
से अनुचित चेतावनियाँ भी सृजित (कोड here और here से आता है) है:data.table checkUsage साथ अच्छी तरह से नहीं चलता है
> library(compiler)
> compiler::enableJIT(3)
> dt <- data.table(a = c(rep(3, 5), rep(4, 5)), b=1:10, c=11:20, d=21:30, key="a")
> my.func <- function (dt) {
dt.out <- dt[, lapply(.SD, sum), by = a]
dt.out[, count := dt[, .N, by=a]$N]
dt.out
}
> checkUsage(my.func)
<anonymous>: no visible binding for global variable ‘.SD’ (:2)
<anonymous>: no visible binding for global variable ‘a’ (:2)
<anonymous>: no visible binding for global variable ‘count’ (:3)
<anonymous>: no visible binding for global variable ‘.N’ (:3)
<anonymous>: no visible binding for global variable ‘a’ (:3)
> my.func(dt)
Note: no visible binding for global variable '.SD'
Note: no visible binding for global variable 'a'
Note: no visible binding for global variable 'count'
Note: no visible binding for global variable '.N'
Note: no visible binding for global variable 'a'
a b c d count
1: 3 15 65 115 5
2: 4 40 90 140 5
a
के बारे में चेतावनी हो सकता है के साथ by=a
को प्रतिस्थापित करके टाल दिया गया, लेकिन मैं अन्य 3 चेतावनियों से कैसे निपटूं?
यह मेरे लिए मायने रखता है क्योंकि ये चेतावनियां स्क्रीन को अव्यवस्थित करती हैं और वैध चेतावनियों को अस्पष्ट करती हैं। चूंकि my.func
आमंत्रण (जब जेआईटी कंपाइलर सक्षम है) पर चेतावनियां जारी की जाती हैं, न केवल checkUsage
तक, मैं इसे bug पर कॉल करने के इच्छुक हूं।
प्रश्न: वे 'my.func' के अंदर वस्तुएं हैं, तो उन्हें 'वैश्विक' चर क्यों माना जाना चाहिए? –
देखें [यह] (http://stackoverflow.com/a/15411032/967840), और [यह] (http://stackoverflow.com/a/8096882/967840) – GSee
मुझे 'checkUsage' नहीं पता है। अगर कुछ है तो मैं 'data.table' में बदल सकता हूं कृपया मुझे बताएं। या शायद 'checkUsage' के लिए एक विकल्प है। –