2016-10-24 21 views
1

基本的な質問があります。R - データテーブル内のリストから要素を削除する方法

library(data.table) 
data.table(a = c(3,4,4,7,7,8), b = list(c(3,4,7,8,9))) 

    a |  b 
1: 3 | 3,4,7,8,9 
2: 4 | 3,4,7,8,9 
3: 4 | 3,4,7,8,9 
4: 7 | 3,4,7,8,9 
5: 7 | 3,4,7,8,9 
6: 8 | 3,4,7,8,9 

私は列に番号を削除する必要があります「」「B」から列:私は次のようなテーブル(data.table)を持っています。列 'b'要素はリストです。 結果は次のようになります。

a | b  | c 
1: 3 | 3,4,7,8,9 | 4,7,8,9 
2: 4 | 3,4,7,8,9 | 3,7,8,9 
3: 4 | 3,4,7,8,9 | 3,7,8,9 
4: 7 | 3,4,7,8,9 | 3,4,8,9 
5: 7 | 3,4,7,8,9 | 3,4,8,9 
6: 8 | 3,4,7,8,9 | 3,4,7,9 

どうすればいいですか?好ましくdata.table
おかげ

によって
+1

'DT [、。(地図(setdiff、B、A))]'それをしない、おそらく同じように、非常に遅くなりますほとんどの操作はリスト列で行います。また、この例では実行しますが、bに値が重複している場合は削除されます。 – Frank

+0

おそらく役に立ちます:http://stackoverflow.com/q/30177951/ – Frank

+1

すぐに答えてくれてありがとう!とても役に立ちました – Yashar

答えて

0

1つのオプションはあるunlist

dt[, c:= .(list(unlist(b)[!unlist(b) %in% a])), 1:nrow(dt)][] 
# a   b  c 
#1: 3 3,4,7,8,9 4,7,8,9 
#2: 4 3,4,7,8,9 3,7,8,9 
#3: 4 3,4,7,8,9 3,7,8,9 
#4: 7 3,4,7,8,9 3,4,8,9 
#5: 7 3,4,7,8,9 3,4,8,9 
#6: 8 3,4,7,8,9 3,4,7,9 
関連する問題