logiciel R: pb somme de vecteurs - Divers - Programmation
MarshPosté le 14-02-2005 à 18:44:29
Bonjour, J'utilise le logiciel R (version 2.0.0) et j'ai un problème avec la fonction suivante:
simudis=function(N,p) { X=runif(N,0,1); k=length(p); a=matrix(0,nrow=k,ncol=N) ; s=rep(0,k); s[1]=p[1]; for (i in 2:k) s[i]=p[i]+s[i-1]; a[1,]=1*(X < s[1]); a[k,]=k*(X >= s[k-1]); for (i in 2:k-1) a[i,]=i*((X >= s[i-1]) & (X < s[i])); va=vector(N,mode="numeric" );
for (i in 1 :N) {for (j in 1:k) va[i]=va[i]+a[j,i]; } va ; }
Si je teste la commande simudis(100,c(0.2,0.5,0.3)), j'obtiens bien la matrice A souhaitée (qui contient des 0,1,2 et 3). Le problème se trouve dans les dernières lignes (sans doute les 2 for), le but de ce programme étant de retourner un vecteur va qui contient la somme des vecteurs-lignes de la matrice A.
Pour information, voici ce que le logiciel me retourne quand je lance la commande simudis(100,c(0.2,0.5,0.3)):
> simudis(100,c(0.2,0.5,0.3)) Error in "[<-"(`*tmp*`, i, , value = i * ((X >= s[i - 1]) & (X < s[i]))) : nothing to replace with
Pourriez-vous m'aider à résoudre ce problème ? Je vous remercie d'avance.
Marsh Posté le 14-02-2005 à 18:44:29
Bonjour,
J'utilise le logiciel R (version 2.0.0) et j'ai un problème avec la fonction suivante:
simudis=function(N,p)
{
X=runif(N,0,1);
k=length(p);
a=matrix(0,nrow=k,ncol=N) ;
s=rep(0,k);
s[1]=p[1];
for (i in 2:k) s[i]=p[i]+s[i-1];
a[1,]=1*(X < s[1]);
a[k,]=k*(X >= s[k-1]);
for (i in 2:k-1) a[i,]=i*((X >= s[i-1]) & (X < s[i]));
va=vector(N,mode="numeric" );
for (i in 1 :N)
{for (j in 1:k)
va[i]=va[i]+a[j,i];
}
va ;
}
Si je teste la commande simudis(100,c(0.2,0.5,0.3)), j'obtiens bien la matrice A souhaitée (qui contient des 0,1,2 et 3). Le problème se trouve dans les dernières lignes (sans doute les 2 for), le but de ce programme étant de retourner un vecteur va qui contient la somme des vecteurs-lignes de la matrice A.
Pour information, voici ce que le logiciel me retourne quand je lance la commande simudis(100,c(0.2,0.5,0.3)):
> simudis(100,c(0.2,0.5,0.3))
Error in "[<-"(`*tmp*`, i, , value = i * ((X >= s[i - 1]) & (X < s[i]))) :
nothing to replace with
Pourriez-vous m'aider à résoudre ce problème ?
Je vous remercie d'avance.