vectorize嵌套在R中的循环

时间:2016-04-11 15:30:42

标签: r for-loop mapply

首先,这不是硬件问题。我在学校时一直在使用嵌套for循环,因为它们处理的数据大小合适。但是现在我的工作需要处理相当大的数据大小,我试图运行循环,但它们需要数天才能完成。所以我只是想知道如何将'mapply'应用于嵌套for循环。

基本上我在R中运行一些文本匹配,我所做的就是使用

match_1=table1[,1]
match_2=table2[,1] 
match_split_1 <- str_split(match_1, pattern = " ")
match_split_2 <- str_split(match_2, pattern = " ")
k = 1
match_result=matrix("empty",ncol=26,nrow=500)
for (i in length(match_split_1))
{
   for (j in length(match_split_2))
{
       if (identical(match_split_1[[i]],match_split_2[[j]]))
{
        temp_result <- c(table1[i,], table2[j,])

      match_result[k,] <- t(as.matrix(c(k,temp_result)))
   k=k+1
   #I tried to pre allocate a matrix to match_result and not increase size
   #of it everytime. However I received: Error in match_result[k, ] <-  
   #t(as.matrix(c(k, temp_result))) : 
   #  incorrect number of subscripts on matrix


}


}

有什么见解? 谢谢!

更新:这是一个更具体的例子:

表1:

name   score  address 
 Jason   8      10 Cornell Street 
 Lisa    7     110 Park Avenue    
 David   10     225 Fifth Avenue

表2:

name    phone# 
David   323-4527 
Kudrow  233-3618

所以我试图按名称匹配这两个表,我不能只是加入它们,因为我正在做的匹配是模糊的。我总是需要处理标点符号,空格,上/下字母等。 我正在做的是从每个表中提取名称,并使用嵌套的for循环进行模糊匹配(循环如上所示)。然后我使用索引i,j组合一行,然后将其附加到'match_result'。现在我想知道我是否可以用矢量化替换嵌套循环。

谢谢!

0 个答案:

没有答案