我想找到一种在R。
中交换2 data.table的简单方法我可以如下所示,但我需要使用临时变量tmp
# Swap a and b
tmp <- copy(a)
a <- copy(b)
b <- copy(tmp)
R是否支持任何交换功能?
答案 0 :(得分:4)
感谢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"
答案 1 :(得分:3)
是不是使用临时变量对你有好处?我的意思是你可以不使用第三个变量来做到这一点:
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
保存到第二个变量中来交换订单,然后保留在第一个变量上留下了什么。