繁体   English   中英

你可以在 R 中同时分配两个变量吗?

[英]Can you assign two variables simultaneously in R?

我正在使用根据圆的半径 (r) 和圆弧的角度 (theta) 计算圆弧长度和圆弧下方面积的示例。 面积和长度都是基于r和theta,你可以在python中同时计算它们。

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

错误:意外的“,”在“arc_len,”

有没有办法在 R 中使用相同的结构?

不,你不能在 R 中做到这一点(至少,不能在基础或我知道的任何包中)。

最接近的方法是将对象分配给列表的不同元素。 如果您真的想要,那么您可以使用list2env将列表元素放在环境中(例如,全局环境),或使用attach使列表元素可访问,但我认为您不会从这些方法中获得太多收益。

如果您希望一个函数返回多个值,只需将它们放在一个列表中。 另请参阅r-Function 返回多个值

您可以为多个变量分配如下相同的值。 即使在这里,我认为代码不寻常且不太清楚,我认为这超过了简洁的任何好处。 (虽然我认为这清楚地表明所有变量都是相同的值......也许在正确的上下文中它是有道理的。)

x <- y <- z <- 1
# the above is equivalent to
x <- 1
y <- 1
z <- 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 个值。 同样,不是你想要的,只是一个建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM