だから、私は2列の文字を持つ非常に巨大なデータフレームを持っています。文字は、「;」で区切られた ID 値です。したがって、これら 2 つの列の間で共通する ID 値の数を計算したいと思います。次に例を示します。
id.x id.y
1 123;145;156 143;156;234;165
2 134;156;187;675 132;145;156;187
したがって、この場合、最初の行には 1 つの共通値があり、2 番目の行には 2 つの共通値があります。
テーブルのサイズは 60M レコードで、一部の文字列の長さは 1000 を超える場合があります。データをテキストファイルに書き込んでpythonで解析しようとしたのですが、ファイルサイズが30GBあります。Rでこれを行うアイデアはありますか? (正規表現、適用、..)
次のコマンドで、共通値の数を数えることができます。
intersect(strsplit(df[1,"ind.x"], split=";")[[1]], strsplit(df[1,"ind.y"], split=";") [[1]])
したがって、私は関数を書きました:
myfun <- function(x,y) {
length(intersect(strsplit(x, split=";")[[1]], strsplit(y, split=";")[[1]]))
}
単一の呼び出しで試してみると機能しますが、以下のように mapply で使用すると、すべての列が出力されますが、出力には数値のみが必要です。
> mapply(FUN=myfun, df[1:2,]$id.x, df[1:2,]$id.y)
123;145;156 134;156;187;675
1 2
では、なぜ最初の列も出力するのでしょうか? コマンドの何が問題になっていますか?