【发布时间】:2022-02-04 14:31:04
【问题描述】:
我有下面的代码计算每个列元素的频率(相对于它自己的列)并将所有五个频率加在一起在一列中。代码可以工作,但速度很慢,大部分处理时间都花在了这个过程上。有什么想法可以更有效地实现相同的目标吗?
Create_Freq <- function(Word_List) {
library(dplyr)
Word_List$AvgFreq <- (Word_List%>% add_count(FirstLet))[,"n"] +
(Word_List%>% add_count(SecLet))[,"n"] +
(Word_List%>% add_count(ThirdtLet))[,"n"] +
(Word_List%>% add_count(FourLet))[,"n"] +
(Word_List%>% add_count(FifthLet))[,"n"]
return(Word_List)
}
编辑:
以提供单词列表为例
Word_List <- data.frame(Word = c("final", "first", "lover", "thing"))
Word_List$FirstLet <- substr(Word_List$Word,1,1)
Word_List$SecLet <- substr(Word_List$Word,2,2)
Word_List$ThirdtLet <- substr(Word_List$Word,3,3)
Word_List$FourLet <- substr(Word_List$Word,4,4)
Word_List$FifthLet <- substr(Word_List$Word,5,5)
}
对于上下文,我有另一个函数可以选择“平均”频率最高的单词。 (以前是一个平均值,但是除以 5 没用,因为它不影响最大值)
【问题讨论】:
-
能否请您发布代码以重新生成数据?
-
我添加了例如代码,实际代码读入了一个大约13000字的列表
标签: r performance dplyr