簡體   English   中英

R不使用臨時變量交換2個data.table

[英]R swap 2 data.table without using temporary variable

我想找到一種在R中交換2 data.table的簡單方法。

我可以按以下方式進行操作,但是我需要使用臨時變量tmp

# Swap a and b
tmp <- copy(a)
a <- copy(b)
b <- copy(tmp)

R是否支持任何交換功能?

感謝R的“僅修改時復制”語義,您可以從表達式中刪除該copy ,它仍然可以使用,並且實際上不會復制任何R版本的數據 (列表答案也不會復制從3.1版開始的數據) :

dt1 = data.table(a = 1)
dt2 = data.table(b = 2)
address(dt1)
#[1] "000000000FDCA298"
address(dt2)
#[1] "000000000F7EC2E8"

tmp = dt1
dt1 = dt2
dt2 = tmp

address(dt1)
#[1] "000000000F7EC2E8"
address(dt2)
#[1] "000000000FDCA298"

只是不使用臨時變量對您有好處嗎? 我的意思是,您可以在不使用第三個變量的情況下執行此操作:

df1 <- data.frame(a = c(1,2,3), b = c(2,3,4))
df2 <- data.frame(c = c(1,2), d = c(2,3))
df1 <- list(df1, df2)
df2 <- df1[[1]]
df1 <- df1[[2]]
df1
c d
1 1 2
2 2 3
df2
  a b
1 1 2
2 2 3
3 3 4

我們將兩個data.frames都保存在一個列表中,而不是兩個data frames的一個,然后我們可以通過將另一個data frame保存到第二個變量中,然后保留第一個變量中的內容來交換順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM