分词加快了n R

时间:2018-07-13 06:51:11

标签: r performance apply

我编写了一个函数,将单词分成单个字母,然后创建一个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) 
} 

该功能可以满足我的需求,但是速度非常慢。下面的示例包含1万个元素,花费了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家族的任何用途,但我相信可能会有一个。还是我的功能可以用完全不同的方式完成?

1 个答案:

答案 0 :(得分:3)

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