Я написал некоторый код R для анализа строк, подсчета вхождения подстрок и заполнения таблицы подстрок. Он отлично работает, но на реальных данных, которые я использую (это довольно большой), действительно очень медленно, и я знаю много, потому что я использую циклы, а не функции из семейства приложений. Я пытался получить этот код в функциональную форму, и мне не повезло, может ли кто-нибудь помочь? Моя самая большая проблема заключается в том, что я не могу определить способ использования имен столбцов для соответствия значениям в конструкции apply. Вот код с некоторыми данными о игрушке:Преобразование R-циклов в функциональную форму с применением
#Create toy data, list of unique substrings
code_frame<-matrix(c(c('a|a|b|c|d'),c('a|b|b|c|c'),c('a|b|c|d|d')),nrow=3,ncol=1)
all_codes_list<-c('a','b','c','d')
#create data frame with a column for each code and a row for each job
code_count<-as.data.frame(matrix(0, ncol = length(all_codes_list), nrow = nrow(code_frame)))
colnames(code_count)<-all_codes_list
#fill in the code_count data frame with entries where codes occur
for(i in 1:nrow(code_frame)){
test_string<-strsplit(code_frame[i,1],split="|",fixed=TRUE)[[1]]
for(j in test_string){
for(g in 1:ncol(code_count)){
if(j == all_codes_list[g]){
code_count[i,g]<-code_count[i,g]+1
}
}
}
}
Спасибо.
Действительно ли это выглядит как code_frame? Как вы ответите, будет зависеть от совета, который я даю. –
Да, в сущности. Это длинная строка с длинными строками, которые мне нужно разбить на подстроки. Это не то, как он создан (он уже сформирован как длинный канал delim str из базы данных, из которого я его вытаскиваю), но форма идентична. – TomR