私は約500.000行の大きなデータセットを持っています。それぞれは文字列です。私は固定サイズにすべての行をトリムしたいと思います。Rで長い文字ベクトルをトリムする高速な方法
私はこれが見つかりました:それは時間がかかりすぎるしかし
dt$rev <- strtrim(dt$rev, width=max_len)
を。より速い方法がありますか?
私は約500.000行の大きなデータセットを持っています。それぞれは文字列です。私は固定サイズにすべての行をトリムしたいと思います。Rで長い文字ベクトルをトリムする高速な方法
私はこれが見つかりました:それは時間がかかりすぎるしかし
dt$rev <- strtrim(dt$rev, width=max_len)
を。より速い方法がありますか?
data.tableとは関係ありません。ただstrtrim()
がかなり遅いです。
中国語/日本語/韓国語以外の文字などの1文字の文字であれば、はるかに高速なsubstr()
を使用できます。
## Make a long character vector with 5 million elements
x <- rep(state.name, 1e5)
## Speed comparison
system.time(substr(x, 1, 3))
# user system elapsed
# 0.43 0.00 0.44
system.time(strtrim(x, 3))
# user system elapsed
# 44.63 0.03 44.85
## Confirm that both methods return the same output
identical(substr(state.name,1,3), strtrim(state.name,3))
# [1] TRUE
これは異常です。私は自分自身を見ていない(私はすべきである)が、それは私がstrtrim()がしていることが何であるのだろうか? (偉大な答えです。) – Andrie
@Andrie。同上。私もショックを受けました。ちょうど '?strtrim'をチェックしたところ、"文字ベクトルにダブル幅(例えば、中国語/日本語/韓国語)の文字がある場合、substrよりもこの関数を使うことは重要です。 "それが答えだと思います。それを確認してくれてありがとう、ありがとう。 –
これはずっと速く働いてくれてありがとう! –
あなたは '使用していない理由、それは' data.table'にならdata.table' [構文](https://s3.amazonaws.com/assets.datacamp.com/img/blog/データ+テーブル+チート+シート.pdf)?また、どれくらいの時間が「長すぎますか? – bouncyball
私はちょうどこの質問を閉じて見つけた、私は本当に理由を理解していない。このコミュニティはますます悪化しています。ここにこの[行動](https://hackernoon.com/the-decline-of-stack-overflow-7cb69faa575d#.2aqn8c7db)について読む良い記事があります –