我必须在数据表中执行逐行逻辑操作,让我用例子来解释一下。假设我有如下给出的数据表(DT)
V1      V2        V3        V4      V5 
 AAE     CDG       2        0        0  
 AAE     CDG       2        5        5  
 AAE     ORY       2        4        4  
 AAE     ORY       2        0        0  
 AAE     ORY       2        5        5  
 AAE     ORY       2        3        3  
现在,根据 V5 的值,我想在数据表中添加额外的列 V6,这是逻辑操作。我做了这样的事情来做到这一点-
DT[, V6 := if(V5 == 0){1
              }else if(V5 == 1){2
              }else if(V5 == 2){3
              }else if(V5 == 3){4
              }else if(V5 == 4){5
              }else if(V5 == 5){6}
    ]
但这并没有给出预期的结果,应该是
V1   V2        V3      V4        V5   V6
 AAE CDG       2        0        0     1
 AAE CDG       2        5        5     6
 AAE ORY       2        4        4     5
 AAE ORY       2        0        0     1
 AAE ORY       2        5        5     6
 AAE ORY       2        3        3     4
鉴于给出以下结果-
 V1   V2       V3       V4       V5    V6
 AAE CDG       2        0        0     1
 AAE CDG       2        5        5     1
 AAE ORY       2        4        4     1
 AAE ORY       2        0        0     1
 AAE ORY       2        5        5     1
 AAE ORY       2        3        3     1
发生这种情况是因为 V5 的第一个值(即 0)用于逻辑操作,而不是一次动态地使用一个值或行值。如何更改 [,J] 参数以获得所需的结果。我可以使用 for 循环来执行此操作,但这样做的效率非常低。