Bonjour à tous,

Je suis en train de transformer une boucle for en une fonction apply car la taille des données traitées devient importante.
J'arrive à utiliser apply ou sapply habituellement mais pas cette fois ; je travaille avec 2 data.frame, que j'ai besoin de ressortir à la fin. C'est là mon souci.
Je pense qu'il n'est pas encore utile de poster les divers messages d'erreur tant que je ne sais pas comment ressortir ces 2 data.frame...
Voici en gros mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
data_calcul_position=data_new_germline[,c(1,2,2,3,4)]
 
calculs_g=function(i,data_calcul_position,data_new_germline){
	if (substr(data_calcul_position$var[i],1,1)=="-")
	{
	data_calcul_position$position[i]=data_calcul_position$position[i]+1
	data_calcul_position$positionEnd[i]=data_calcul_position$positionEnd[i]+nchar(as.character(data_calcul_position$var[i]))-1
	data_calcul_position$new_ref[i]= sapply(strsplit(as.character(data_calcul_position$var[i]), "-"), function(x) x[2])  
	data_calcul_position$new_var[i]="-"
	}
 
	else if (substr(data_calcul_position$var[i],1,1)=="+")
	{
	data_calcul_position$position[i]=data_calcul_position$position[i]+1
	data_calcul_position$positionEnd[i]=data_calcul_position$positionEnd[i]+1
	data_calcul_position$new_ref[i]="-"
	data_calcul_position$new_var[i]=sapply(strsplit(as.character(data_calcul_position$var[i]), "+"), function(x) x[2]) 
	data_new_germline$position[i]=data_calcul_position$position[i]
	}
 
	else
	{
	data_calcul_position$new_ref[i]=as.character(data_calcul_position$ref[i])
	data_calcul_position$new_var[i]=as.character(data_calcul_position$var[i])
	}
return(list(data_calcul_position,data_new_germline))		
}
 
s_calcul_g=sapply(1:nrow(data_calcul_position), function(i) {calculs_g(i,data_calcul_position,data_new_germline)})
J'ai essayé de retourner les champs des data.frame plutôt que les data.frame eux-mêmes mais ça n'a pas été mieux ! Après une petite recherche, j'ai essayé également la fonction adply du package plyr, sans succès.

Savez-vous s'il est possible de retourner un data.frame dans une fonction apply ? Et si non, que me conseillez-vous ?
Merci d'avance