2016-05-09 5 views
-1

Я использую пример вычисления длины дуги вокруг круга и области под дугой вокруг окружности, основанной на радиусе круга (r) и угла дуги (тета). Площадь и длина основаны на r и theta, и вы можете рассчитать их одновременно в python.Можете ли вы назначить две переменные одновременно в R?

В python я могу присвоить два значения одновременно, выполнив это.

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) 

Реализация той же структуры в R дает мне это.

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

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

Но возвращает эту ошибку.

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

Error: unexpected ',' in "arc_len,"

Есть ли способ использовать ту же структуру в R?

+0

это два отдельных значения, arc_len! = Arc_area – polka

+2

Я не знаю, что делает этот код на Python, поэтому вам может понадобиться объяснить, что именно вы пытаетесь сделать. –

+0

ok, сделано. дайте мне знать, если мое объяснение в порядке. – polka

ответ

4

Нет, вы не можете сделать это в R (по крайней мере, не в базе или каких-либо пакетах, о которых я знаю).

Ближе всего вы могли бы назначить объекты различным элементам списка. Если бы вы действительно хотели, вы могли бы затем attach списка, но я бы не рекомендовал бит attach - это не очень похоже на R-like.

Если вы хотите, чтобы функция возвращала более одного значения, просто поместите их в список. См. Также r - Function returning more than one value.

1

Как сказал Грегор, нет никакого способа сделать это именно так, как вы сказали, и его метод является хорошей, но вы также можете иметь вектор представляет свои два значения, как так:

# 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) 

Поэтому в основном вы может создать вектор и вернуть возвращаемые функции обратно, который по существу заполняет сразу 3 значения. Опять же, не то, что вы хотите точно, просто предложение.

Смежные вопросы