2016-05-09 13 views
-1

Ich verwende das Beispiel der Berechnung der Länge des Bogens um einen Kreis und der Fläche unter dem Bogen um einen Kreis basierend auf dem Radius des Kreises (r) und dem Winkel des Bogens (Theta). Die Fläche und die Länge basieren beide auf r und Theta, und Sie können sie gleichzeitig in Python berechnen.Können Sie zwei Variablen gleichzeitig in R zuweisen?

In Python kann ich zwei Werte gleichzeitig zuweisen, indem Sie dies tun.

from math import pi 
    def circle_set(r, theta): 
     return theta * r, .5*theta*r*r 

    arc_len, arc_area = circle_set(1, .5*pi) 

Implementierung der gleichen Struktur in R gibt mir dies.

circle_set <- function(r, theta){ 
     return(theta * r, .5 * theta * r *r) 
     } 

    arc_len, arc_area <- circle_set(1, .5*3.14) 

Aber gibt diesen Fehler zurück.

arc_len, arc_area <- circle_set(1, .5*3.14)

Error: unexpected ',' in "arc_len,"

Gibt es eine Möglichkeit, dieselbe Struktur in R zu verwenden?

+0

das sind zwei separate Werte, arc_len! = Arc_area – polka

+2

Ich habe keine Ahnung, was dieser Python-Code tut, also müssen Sie vielleicht erklären, was Sie versuchen zu tun. –

+0

ok, fertig. lassen Sie mich wissen, ob meine Erklärung in Ordnung ist. – polka

Antwort

4

Nein, das kann man in R nicht machen (zumindest nicht in der Basis oder irgendwelchen Paketen, die mir bekannt sind).

Die nächste Möglichkeit wäre, Objekte verschiedenen Elementen einer Liste zuzuordnen. Wenn Sie wirklich wollten, könnten Sie dann die attach Liste, aber ich würde das attach Bit nicht empfehlen - es ist nicht sehr R-like.

Wenn Sie möchten, dass eine Funktion mehr als einen Wert zurückgibt, fügen Sie sie einfach in eine Liste ein. Siehe auch r - Function returning more than one value.

1

Als Gregor sagte, gibt es keine Möglichkeit, es zu tun genau wie Sie gesagt haben, und seine Methode ist gut, aber man könnte auch einen Vektor repräsentieren Ihre beiden Werte wie so haben:

# Function that adds one value and returns a vector of all the arguments. 
plusOne <- function(vec) { 

    vec <- vec + 1 
    return(vec) 

} 

# Creating variables and applying the function. 
x <- 1 
y <- 2 
z <- 3 
vec <- c(x, y, z) 
vec <- plusOne(vec) 

Sie also im Wesentlichen Könnte einen Vektor machen und haben Ihre Funktion Rückkehr Vektoren, die im Wesentlichen 3 Werte auf einmal füllt. Nochmal nicht was du willst, nur ein Vorschlag.

Verwandte Themen