我有一个大约有500,000行的大数据集。他们每个人都是字符串。我想将所有行修剪为固定大小。
我发现了这个:
dt$rev <- strtrim(dt$rev, width=max_len)
然而,这需要太长时间。有更快的方法吗?
答案 0 :(得分:12)
这与 data.table 无关。只是strtrim()
相当缓慢。
只要您使用单宽字符(例如,中文/日文/韩文等字符),您就可以使用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