Bonjour,

J'ai vraiment cherché mais je m'avoue incapable de résoudre ce problème qui va surement paraître hypersimple à ceux qui maîtrisent R. Juste pour mieux me situer pour ceux qui connaitraient, je suis une utilisatrice avancée de SAS et connaît particulièrement bien ses macros. Je suis complètement nouvelle sur R et essaye de résoudre des problèmes type "macro dans SAS".

Voici le programme que j'essaye de construire :

Au départ j'avais le code suivant (qui fonctionne très bien):
ProfilConso <- function(Pattern,X1,X2,XHist,NbX1,NbX2,NbXH)
{
# Initialisation des variables de type compteur
NbX1=0; NbX2=0; NbXH=0

for(i in 1:NbRec) {
Pattern[i]=0
if (X1[i]=="O") {
Pattern[i]=Pattern[i]+1
NbX1=NbX1+1
}
if (X2[i]=="O") {
Pattern[i]=Pattern[i]+2
NbX2=NbX2+1
}
if (XHist[i]=="O") {
Pattern[i]=Pattern[i]+4
NbXH=NbXH+1
}
}
print(NbRec); print(NbX1); print(NbX2); print(NbXH); print(Pattern); table(Pattern)
}

ProfilConso(ConsoAlim$CER_Pattern,ConsoAlim$CER_J1,ConsoAlim$CER_J2,ConsoAlim$CER_Hist,NbCERJ1,NbCERJ2,NbCERHist)
ProfilConso(ConsoAlim$PAIN_Pattern,ConsoAlim$PAIN_J1,ConsoAlim$PAIN_J2,ConsoAlim$PAIN_Hist,NbPAINJ1,NbPAINJ2,NbPAINHist)
ProfilConso(ConsoAlim$FRI_H_Pattern,ConsoAlim$FRI_H_J1,ConsoAlim$FRI_H_J2,ConsoAlim$FRI_H_Hist,NbFRI_HJ1,NbFRI_HJ2,NbFRI_HHist)
ProfilConso(ConsoAlim$FRI_F_Pattern,ConsoAlim$FRI_F_J1,ConsoAlim$FRI_F_J2,ConsoAlim$FRI_F_Hist,NbFRI_FJ1,NbFRI_FJ2,NbFRI_FHist)
ProfilConso(ConsoAlim$CHI_Pattern,ConsoAlim$CHI_J1,ConsoAlim$CHI_J2,ConsoAlim$CHI_Hist,NbCHIJ1,NbCHIJ2,NbCHIHist)


etc....
Sauf que j'ai un grand nombre de situations comme celles-ci à ré-écrire où seules quelques lettres changent dans le nom des variables que je souhaite traiter comme argument de ma fonction.

Je souhaitais donc remplacer les différentes parties de ces noms en sous-variables et les reconstruire pour former le nom complet que j'ai à traiter :
- "ConsoAlim" est le nom du fichier que je traite (FileName)
- "CER" ou "PAIN" ou ("FRI_H" ou etc...) le nom du sous-item que je veux analyser
etc...


Voici le code où je me suis rendue:

ProfilConso <- function(FileName,ItemAbbrev,Pattern,X1,X2,XHist,NbX1,NbX2,NbXH)
{
# Initialisation des variables de type compteur
NbX1=0; NbX2=0; NbXH=0

Pattern = paste(FileName,"$",ItemAbbrev,"_Pattern",sep=""); print(Pattern)
X1 = paste(FileName,"$",ItemAbbrev,"_J1",sep=""); print(X1)
X2 = paste(FileName,"$",ItemAbbrev,"_J2",sep=""); print(X2)
XH = paste(FileName,"$",ItemAbbrev,"_Hist",sep=""); print(XH)


for(i in 1:NbRec) {
Pattern[i]=0
if (X1[i]=="O") {
Pattern[i]=Pattern[i]+1; NbX1=NbX1+1
}
if (X2[i]=="O") {
Pattern[i]=Pattern[i]+2; NbX2=NbX2+1
}
if (XH[i]=="O") {
Pattern[i]=Pattern[i]+4; NbXH=NbXH+1
}
}
print(NbRec); print(NbX1); print(NbX2); print(NbXH); print(Pattern); table(Pattern)
}

ProfilConso("ConsoAlim","CER",Pattern,J1,J2,Hist,NbJ1,NbJ2,NbHist)
Sauf que dans le code ci-dessus, si j'arrive effectivement à bien reconstruire les noms dont j'ai besoin dans les variables Pattern, X1, X2 et XH, je n'arrive pas à faire que ce n'est pas la variable Pattern ou X1 qui est traitée mais leur contenu !!

ex.
Si Pattern = ConsoAlim$CER_Pattern, ce n'est pas Pattern que je veux traiter mais la variable ConsoAlim$CER_Pattern...



Merci d'avance de votre aide.