在R中修剪长字符向量的更快方法

时间:2016-08-25 18:24:15

标签: r string trim

我有一个大约有500,000行的大数据集。他们每个人都是字符串。我想将所有行修剪为固定大小。

我发现了这个:

dt$rev <- strtrim(dt$rev, width=max_len)

然而,这需要太长时间。有更快的方法吗?

1 个答案:

答案 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