是否有R函数双向分配变量?例如,让<->
代表双向赋值运算符。
a <-> b
a
> b
b
> a
答案 0 :(得分:4)
一个人可以定义如下内容:
`%<->%` <- function(x,y){
t <- y
assign(deparse(substitute(y)), x, envir=parent.frame())
assign(deparse(substitute(x)), t, envir=parent.frame())
}
a <- 1
b <- 2
a %<->% b
a
[1] 2
b
[1] 1
答案 1 :(得分:2)
这样的运算符对R的功能方式毫无意义:
来自Hadley Wickham's book Advanced R, section "Binding basics":
考虑以下代码:
x <- c(1, 2, 3)
[...]这段代码在做两件事:
- 它正在创建一个对象,值的向量,
c(1, 2, 3)
。- 并将该对象绑定到名称
x
。
例如,当您运行时:
a <- 1
您正在创建一个具有一个元素的数字矢量,并将其绑定到名称a
。
a <-> b
将名称彼此绑定,这在R中没有意义。
还请注意以下事项:
a <- 1
b <- a
b
# [1] 1
您将获得1
而不是a
作为输出,因为您创建了另一个与值b
的数字向量的绑定(1
)。而且,当您运行b
时,输出是与其绑定的对象(1
),而不是该对象绑定的其他名称。
注意:Hadley在他的书中用图表非常清楚地解释了这一切。