首页 > 解决方案 > 分词加速 n R

问题描述

我编写了一个函数,将单词拆分为单个字母,然后创建一个 2 个变量数据框,其中这些字母及其在原始单词中的位置以百分比表示。它看起来像这样:

pozycje.literek <- function(slowo){
  literki <- unlist(strsplit(slowo,""))
  liczby <- seq(0,length(literki)-1) / (length(literki)-1)
  pozycje <- data_frame(literki, liczby)
  return(pozycje) 
} 

该功能可以满足我的需要,但是速度非常慢。下面的例子有 10000 个元素,它花了 52 秒(只是第二个循环,没有生成随机的字符示例向量)。我正在处理的向量超过 50 万。

wektor <- vector()
for(i in 1:10000){
wektor[i] <- paste0(sample(letters[1:24], round(runif(1,3,10),0)),collapse = "")
}

tabelka <- data.frame() 
system.time(for(i in wektor){
  tabelka <- rbind(tabelka, pozycje.literek(i)) #tu powstaje baza dla danego kraju i potem już jest kod wspolny bo zamieniam na 'tabelka'
})

知道如何加快速度吗?我想不出任何apply家庭的应用来做到这一点,但我相信可能会有一个。或者我的职能所做的工作可以以完全不同的方式完成?

标签: rperformanceapply

解决方案


literki <- strsplit(wektor, "")
x <- lengths(literki)
liczby <- lapply(x, function(x) seq(0, x-1)/(x-1))
pozycje <- data_frame(unlist(literki), unlist(liczby))

推荐阅读