Substituir rbind no loop for por lapply? (2º círculo do inferno)

Estou tendo problemas para otimizar um pedaço de código R. O código de exemplo a seguir deve ilustrar meu problema de otimização:

Algumas inicializações e uma definição de função:

a <- c(10,20,30,40,50,60,70,80)
b <- c(“a”,”b”,”c”,”d”,”z”,”g”,”h”,”r”)
c <- c(1,2,3,4,5,6,7,8)
myframe <- data.frame(a,b,c)
values <- vector(length=columns)
solution <- matrix(nrow=nrow(myframe),ncol=columns+3)

myfunction <- function(frame,columns){
athing = 0
   if(columns == 5){
   athing = 100
   }
   else{
   athing = 1000
   }
value[colums+1] = athing
return(value)}

O problemático for-loop se parece com isso:

columns = 6
for(i in 1:nrow(myframe){
   values <- myfunction(as.matrix(myframe[i,]), columns)
   values[columns+2] = i
   values[columns+3] = myframe[i,3]
   #more columns added with simple operations (i.e. sum)

   solution <- rbind(solution,values)
   #solution is a large matrix from outside the for-loop
}

O problema parece ser orbind função. Frequentemente recebo mensagens de erro sobre o tamanho desolution que parece ser muito grande depois de um tempo (mais de 50 MB). Eu quero substituir esse loop e orbind com uma lista elapply e / ou foreach. Eu comecei com a conversãomyframepara uma lista.

myframe_list <- lapply(seq_len(nrow(myframe)), function(i) myframe[i,])

Eu realmente não cheguei além disso, embora tenha tentado aplicar issomuito boa introdução ao processamento paralelo.

Como preciso reconstruir o loop for sem precisar alterarmyfunction? Obviamente, estou aberto a diferentes soluções ...

Edit: Este problema parece ser direto doSegundo círculo do inferno do Inferno R. Alguma sugestão?

questionAnswers(2)

yourAnswerToTheQuestion