2017-08-29 2 views
-1

Ich bin neu in R. Also im Grunde habe ich 2 Fragen:Ändern Objekte innerhalb einer Funktion in r

  1. In C++ können wir Objekte passieren als Referenzen der Lage sein, eine Funktion zurückzukehren mehrere geänderten Objekte aus . Was ist eine äquivalente Methode zum Ändern mehrerer Objekte in einer Funktion? (zum Beispiel a und b in fyfunc)
  2. In unten Code, ich dachte, seit ich Zugriff auf b innerhalb myfunc habe, könnte ich es ändern. Aber anscheinend ist es eine Kopie von b. Gibt es überhaupt eine Änderung an b innerhalb myfunc?
a <- c(1,2,3) 
b <- c(4,5,6) 

myfunc <- function(a) { 
    b <- b+1 
    cat(b) # prints: 5 6 7 
    a <- a+1 
} 

a <- myfunc(a) 
a 
b # stil 4 5 6 
+4

Schlechte Idee. Es wird nicht empfohlen, Objekte in Umgebungen zu ändern. –

+5

Schreiben Sie keinen R-Code wie Sie C++ - Code schreiben. Dies wird später zu Härten führen. R ist eine funktionale Sprache und Funktionen sollten idealerweise keine Nebenwirkungen haben (Werte außerhalb ihres Gültigkeitsbereichs ändern). Versuchen Sie, Ihr Design besser zu überdenken. – MrFlick

+0

Es gibt Möglichkeiten, das zu tun, wie zum Beispiel '' '' '' anstatt '<-' zu verwenden, aber es ist eine schlechte Übung. Schau hier: https://stackoverflow.com/questions/2628621/how-do-you-use-scoping-assignment-in-r – Masoud

Antwort

1

können Sie <<- statt <- oder assign('b', b+1, envir = globalenv()) in Funktion myf verwenden.

myf <- function(a) { assign('b', b+1, envir = globalenv()) cat(b) # prints: 5 6 7 a <- a+1 }

Verwandte Themen