データをマージする過程で、リストの列になってしまうことがよくあります (たとえば、左側のテーブルの行に右側のテーブルにいくつかの一致があります)。
定義しましょう
DT = data.table(x=list(c(1,2),c(3,4,5)),y=list(c(T,T),c(T,F,T)),z=c(1,2),N=c(1L,2L))
# x y z N
#1: 1,2 TRUE,TRUE 1 1
#2: 3,4,5 TRUE,FALSE,TRUE 2 2
- in-place aka
update
x
toを変更することは可能x[y]
ですか?
私はそれを行うことができますが、次のように更新することはできません(そして醜く見えます):
DT1 = DT[,list(x=list(unlist(x)[unlist(y)])),by=N]
DT = cbind(DT[,x:=NULL],DT1[,list(x)])
y z N x
1: TRUE,TRUE 1 1 1,2
2: TRUE,FALSE,TRUE 2 2 3,5
mySet = c(1,5)
ここで、列の値を定義して確認したいとしましょうx %in% mySet
これどうやってするの ?
y z N x isInMySet 1: TRUE,TRUE 1 1 1,2 TRUE,FALSE 2: TRUE,FALSE,TRUE 2 2 3,5 FASLE,TRUE