R-Paketkompilierung mit Abhängigkeit von data.table

8

Ich versuche ein R-Paket mit einer Funktion zu erstellen, indem ich J von data.table verwende. Wenn ich R CMD check ausführen, habe ich eine Anmerkung: keine sichtbare globale Funktionsdefinition für 'J' obwohl ich data.table als eine Abhängigkeit in der DESCRIPTION-Datei hinzugefügt habe.

  

Paket: rfPred
  Typ: Paket
  Title: Weisen Sie einer Missense-Variantenliste
rfPred funktionale Vorhersagewerte zu   Version: 1.0
  Datum: 2013-03-14
  Autor: ich
  Betreuer: ich   Hängt ab: data.table
  [..]

Ich habe versucht, eine andere Funktion des data.table-Pakets in dem Paket zu verwenden, das ich erstellen möchte, aber ich habe nicht das gleiche Problem wie für J.

Haben Sie eine Lösung?

    
user2169834 14.03.2013, 12:51
quelle

1 Antwort

9

J() als unabhängige Funktion wurde aus data.table entfernt. Es ist nur für den Gebrauch in DT[...] , wo es immer noch funktioniert. Aber für Pakete, die von data.table abhängig sind und J() korrekt verwenden, ist wie bei Ihnen ein zusätzlicher Schritt erforderlich, um die ANMERKUNG zu umgehen (siehe unten).

Zuerst der Hintergrund und warum J() entfernt wurde. Auszüge aus NEWS :

v1.8.2 (Jul 2012):

  • Der J () Alias ​​ist jetzt außerhalb von DT [...] veraltet, funktioniert aber immer noch Innerhalb DT [...], wie in DT [J (...)]. J () steht im Konflikt mit der Funktion J () im Paket XLConnect (# 1747) und rJava (# 2045). Für data.table zu ändern ist einfacher, mit einigen Effizienz Vorteile auch. Die nächste Version von data.table wird eine Warnung ausgeben von J () bei Verwendung außerhalb von DT [...]. Die nachfolgende Version wird es entfernen. Nur dann wird der Konflikt mit rJava und XLConnect wird gelöst. Verwenden Sie data.table () direkt anstelle von J () außerhalb von DT [...].

v1.8.4 (Nov 2012):

  • J () gibt jetzt eine Warnung aus (wenn außerhalb DT [...] verwendet wird), die es verwendet außerhalb DT [...] ist veraltet. Siehe unten in Version 1.8.2. Verwenden Sie data.table () direkt anstelle von J () außerhalb von DT [...]. Oder, definieren ein Alias ​​selbst. J () wird weiterhin innerhalb DT [...] als funktionieren dokumentiert.

v1.8.8 (jetzt auf CRAN, Mär 2013):

  • Der J () Alias ​​wird jetzt außerhalb DT [...] entfernt, funktioniert aber weiterhin in DT [...]; d.h. DT [J (...)] ist in Ordnung. Wie in v1.8.2 gewarnt (siehe unten in diesem Artikel) Datei) und veraltet mit Warnung () in v1.8.4. Dies löst den Konflikt mit der Funktion J () im Paket XLConnect (# 1747) und rJava (# 2045). Verwenden Sie data.table () direkt anstelle von J () außerhalb von DT [...].

Nebenbei gab es auch einen kürzlichen verwandten Thread auf r-devel:
Ссылка

Jetzt für den Hinweis, der von R CMD check auf Ihrem Paket erstellt wird

Ihr Paket verwendet J() in% DT[...] und funktioniert gut. Das einzige Problem ist der HINWEIS von R CMD Check:

%Vor%

Hier sind alle bekannten Optionen:

  • Ignoriere die ANMERKUNG. (Ich mag das auch nicht, aber nur als eine Option). Nur WARNING und ERROR müssen behandelt werden.
  • Ersetzen Sie J durch list . Es ist gleichwertig.
  • Definieren Sie J=NULL irgendwo in Ihrem Paket. (Wir haben uns data.table exporting J=NULL angesehen, so dass Sie nicht müssen, aber nicht entschieden haben, da data.table Benutzer J an der Eingabeaufforderung NULL eingeben würde, was verwirrend sein könnte.)
  • Oder verwenden Sie ?utils::globalVariables , wie Ben Bolker in Kommentaren vorgeschlagen hat.

Weitere Hintergrundinformationen zu diesem speziellen HINWEIS finden Sie in dieser verwandten Frage:

Keine sichtbare Bindung für globale Variable Hinweis in R CMD-Prüfung

    
Matt Dowle 14.03.2013, 13:44
quelle

Tags und Links