上下文:我试图在两个data.table
列中交换值,然后在这里找到答案:
Swapping values between two columns using data.table
通过加入data.table
并将值从一个表分配给另一个表来尝试交换时,我发现data.table
有一些奇怪的行为。这是一个可重复的例子:
## create data table and bind one row
a <- data.table(idcol = integer(), col1 = character(), col2 = character())
a <- rbindlist(list(a, list(1, 'left value', 'right value')))
## view a to see that the left value is in col1 as expected
a
## make two copies of a
b <- a
c <- a
## join b and c and assign col1 and col2 to i.col2 and i.col1 respectively to
## effectively swap the values in b
b[c, on='idcol', `:=`(col1 = i.col2, col2 = i.col1)]
## looking at each data.table below, somehow a was updated??? I feel like I'm
going crazy.
a
b
正如你可以看到我的评论,不知何故原始的表格&#34; a&#34;使用交换的值以及两个副本(表格&#34; b&#34;和&#34; c&#34;)进行更新,即使我没有使用&#34; a&#34;在加入/分配中。就像我说的那样,我找到了关于如何交换的原始问题的答案,但我认为这很奇怪,可以发布。
这怎么可能?我疯了吗?谢谢!