R:交换两个变量而不使用第三个变量

maR*_*tin 9 r

我有两个变量(即):

   a <- 1
   b <- 2
Run Code Online (Sandbox Code Playgroud)

我想换掉他们的价值观.是否有内置的R功能,能够执行该操作?或者是否有其他优雅的方式,而不使用第三个(临时)变量?

注意:如果可能,则适用于字符串或其他数据类型.

Mat*_*ert 8

有一般解决方案或'技巧':

a <- 1
b <- 2

a <- a + b
b <- a - b
a <- a - b
Run Code Online (Sandbox Code Playgroud)

这是一个有用的链接,解释了很多:xor-trick


Ron*_*hah 7

对于整数,您可以使用

a = a + b
b = a - b
a = a - b
Run Code Online (Sandbox Code Playgroud)

对于字符串,这可行

a <- "one"
b <- "two"
a <- paste(a,b, sep = "")
b <- substr(a,0,nchar(a) - nchar(b))
a <- substr(a,nchar(b) + 1, nchar(a))

> a
# two
> b 
# one
Run Code Online (Sandbox Code Playgroud)


Nat*_*rth 6

基础包中有太多功能的好处是:总有办法做某事,即使这是一个坏主意。

list2env(list(a = b, b = a), envir = .GlobalEnv)
Run Code Online (Sandbox Code Playgroud)

无论 和a是什么类,这都有效b。但我再说一遍:这是一个坏主意。