2017-11-03 3 views
0

Meine Frage bezieht sich auf dieses: Function that returns a function in R aber ich versuche, ein R-Paket zu erstellen. Ich habe die folgende Funktion, die einen Datenrahmen verwendet, der in sysdata.rda namens NInput gespeichert wird. Ich möchte eine Funktion mit der Funktion carfun() zurückgeben. Ich möchte, dass der Benutzer dieses Pakets Nfun (Daten) aufrufen kann, wobei Daten die übliche Eingabe für die mit carfun() erstellte Funktion wären.Funktion, die eine Funktion in benutzerdefinierten R-Paket zurückgibt

#' A function to return interpolated N input data 
#' 
#' function to return interpolated N input data for decimal dates 
#' @param Dates A scalar or vector of decimal input dates 
#' @keywords nitrogen 
#' @export 
#' @examples 
#' Nfun() 

Nfun <- function(){ 
NInput$Date 
NInput$Ninput 
Nfun <- approxfun(NInput$Date,NInput$Ninput,rule=2) 
} 

Allerdings, wenn ich mein Paket mit dieser Funktion installieren und Nfun (1900) in meiner R Sitzung rufen nach Laden des Pakets, die ich erhalten:

Error in Nfun(1900) : unused argument (1900) 

wenn ich

Nfun <- Nfun() 
gesetzt in meiner aktiven R-Sitzung

außerhalb des Nfun.R Skript, nachdem er das Paket geladen, erscheint meine Funktion im globalen Umfeld und ich

anrufen
Nfun(1900) 
[1] 0.7846106 

Aber ich will nicht der Benutzer, dies zu tun haben. Ich denke, ich mache einen grundlegenden Fehler bei der Definition meiner Paketfunktion, aber ich bin ratlos.

+0

Du machst ein Chaos mit diesen Namen, nenne nicht alles ** 'Nfun'! –

+0

https://stackoverflow.com/q/20223601/1412059 – Roland

Antwort

1

Ihre Implementierung von Nfun nicht Argument hat, daher tritt der Fehler auf.

Wenn ich richtig verstehe, möchten Sie eine Funktion von approxfun machen und Nfun gibt den Wert der Funktion für Benutzereingaben, richtig? Wenn ja, sollte folgendes funktionieren.

Nfun <- function(x){ 
    NInput$Date 
    NInput$Ninput 
    Nfun <- approxfun(NInput$Date,NInput$Ninput,rule=2)(x) 
} 
+0

Ich mag es auch, würde die Werte drucken, ohne dass sie zu einem Objekt zugewiesen werden, sie zu sehen. Würden Sie etwas wie: print (Nfun (x)) empfehlen? – user29609

+0

'print' funktioniert. "Katze" und "Nachricht" wären andere Kandidaten. –

Verwandte Themen