r - 分词加速 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
家庭的应用来做到这一点,但我相信可能会有一个。或者我的职能所做的工作可以以完全不同的方式完成?
解决方案
literki <- strsplit(wektor, "")
x <- lengths(literki)
liczby <- lapply(x, function(x) seq(0, x-1)/(x-1))
pozycje <- data_frame(unlist(literki), unlist(liczby))
推荐阅读
- php - AJAX 从数据库中删除项目
- heroku - puppeteer 部署到 heroku 时失败
- javascript - 写入 cookie 的 React 组件的奇怪行为
- css - 移动模式下不显示文字阴影
- excel - Excel/ Libreoffice Calc - 确定日期范围并仅汇总该范围内月份的值
- c# - 最短路线算法非常慢
- javascript - 我如何使用平面列表返回对象列表?
- c++ - delete c in void insert() 打印无限数,如果我将其注释掉,我会得到正确的输出
- java - 使用单个 json 但发布多个 AVRO 消息
- arrays - 如何将用户输入收集到 VBA 中的数组