R:在R数据表中的特定位置插入列

R:在R数据表中的特定位置插入列,r,data.table,R,Data.table,我有下面的数据表 user_id user_system_days event total_pics [1,] 21196680 0 0 124 [2,] 21197699 0 0 4 [3,] 21197861 0 0 14 [4,] 21198820 1 0 21

我有下面的数据表

      user_id user_system_days event total_pics 
[1,] 21196680             0     0         124   
[2,] 21197699             0     0           4   
[3,] 21197861             0     0          14   
[4,] 21198820             1     0          21   
[5,] 21199601             0     0           3   
[6,] 21203847             0     0           1   
基于column事件中的值,我想在数据表中插入一列,我的方法是编写一个函数,并使用该函数返回一个值

opposite_event  <- function(x) {
  y <- 1
  if (x == 1) 
    y <- 0
  return (y)
}
这实际上添加了列,但值是错误的:

      user_id user_system_days event total_pics op_event
[1,] 21196680             0     0         124      0
[2,] 21197699             0     0           4      0
[3,] 21197861             0     0          14      0
[4,] 21198820             1     0          21      0
[5,] 21199601             0     0           3      0
[6,] 21203847             0     0           1      0

根据我的函数,如果
dt$event
的值为
1
,则返回值应为
0
,如果
dt$event
为0,则返回值应为
1
,此外,我不确定如何将列插入特定位置,如事件后的列

如果
未矢量化,将其替换为
y,这样,若事件==1,则op_事件的值为1;若事件==0,则op_事件应为11@Null-假设是的。@SeñorO重新排列列顺序的最佳方法是什么,例如在事件列之后获取列op_事件?重新排列列的惯用方法是使用
setcolorder
。将按引用重新排列(无副本)。Doing
dt[,list(.)]
是一个列子集,它将创建一个副本。用另一种方法更新:
dt[,op_event:=as.integer(!event)]
      user_id user_system_days event total_pics op_event
[1,] 21196680             0     0         124      0
[2,] 21197699             0     0           4      0
[3,] 21197861             0     0          14      0
[4,] 21198820             1     0          21      0
[5,] 21199601             0     0           3      0
[6,] 21203847             0     0           1      0
dt[,op_event := ifelse(event == 0, 1, 0)]