我有以下数据表
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
基于列事件中的值,我想在数据表中插入一列,我的方法是编写一个函数,然后使用该函数返回一个值。
opposite_event <- function(x) {
y <- 1
if (x == 1)
y <- 0
return (y)
}
我调用函数如下:
dt[,op_event:=opposite_event(dt$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$event
的值为1
,则返回值应为0
,如果dt$event
为0,则返回值应为1
另外,我不知道如何将列插入事件列之后的特定位置。
答案 0 :(得分:2)
if
未进行矢量化,请将其替换为y <- ifelse(x == 0, 1, 0)
。
我认为你真的不需要自定义功能:
dt[,op_event := ifelse(event == 0, 1, 0)]