Ich habe ein Paket (z. B. testpackage1
), die eine Methode namens readData()
enthält.So importieren Sie Daten aus einem anderen Paket
Diese Methode liest eine test.data.rda
-Datei, die in den Datenordner testpackage1
platziert wird und nach einigen Operationen einen Datenrahmen zurückgibt.
Dies ist die einzige R-Datei in testpackage1
:
#' Reads data and transforms it
#'
#' @return a data.frame
#' @export
#'
#' @examples my.df <- readData()
readData <- function() {
return(subset(test.data, x < 50))
}
initPackage <- function() {
test.data <- data.frame(x = seq(1, 100),
y = seq(101, 200))
devtools::use_data(test.data, overwrite = TRUE)
}
Aufruf der initPackage
Methode erstellt der Datenrahmen und speichert sie als .rda Datei im Datenordner.
Jetzt habe ich ein zweites Paket erstellt namens testpackage2
, die auch nur ein R-Datei hat:
#' Gets the data
#'
#' @import testpackage1
#' @export
#'
#' @examples hello()
hello <- function() {
print(testpackage1::readData())
}
ich beiden Pakete gebaut, dann eine neue R-Sitzung gestartet und tippe:
> library(testpackage2)
> hello()
aber ich habe diesen Fehler:
Error in subset(test.data, x < 50) : object 'test.data' not found
4. subset(test.data, x < 50) at hello.R#8
3. testpackage1::readData()
2. print(testpackage1::readData()) at hello.R#8
1. hello()
Wenn ich require(testpackage1)
bef Typ Erz Aufruf Methode hello()
, dann funktioniert es.
Aber ich dachte, Laden testpackage2
hätte automatisch seine Abhängigkeiten geladen. Ich könnte hinzufügen require(testpackage1)
in der hello()
Funktion, aber es scheint redundant mit der @import
-Anweisung.
Darüber hinaus ist die readData()
IS korrekt importiert, warum nicht die Daten? Soll ich die Daten auch irgendwie exportieren?