salut,
je suis débutant avec R langue
mon but est savoir comment écrire une fonction.
merci d'avance
salut,
je suis débutant avec R langue
mon but est savoir comment écrire une fonction.
merci d'avance
Pour bien résoudre cette fonction on doit diviser les problèmes.
En premier lieu :
l'appel au nom et prenom se fait par :
..ici déclarer variable age
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 print( "taper le nom" ) nom <- scan(nmax=1) print( "taper le prenom" ) prenom <- scan(nmax=1) print( "taper la date de naissance" ) dateNaissance <- ........ ICI le problème
l'affichage finale se fait par
Code : Sélectionner tout - Visualiser dans une fenêtre à part paste('Bonjour je m\'appelle', nom, 'et j\'ai', age, 'ans', sep=' ')
La déclaration de fonction se fait par
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 affichage<-function() { print( "taper le nom" ) nom <- scan(nmax=1) print( "taper le prenom" ) prenom <- scan(nmax=1) print( "taper la date de naissance" ) dateNaissance <- ........ ICI le problème ..ici déclarer variable age // récupérer la date système // faire de boucle for pour calculer l'age ( comparer le mois et l'année entre date de naissance saisie et date système paste('Bonjour je m\'appelle', nom, 'et j\'ai', age, 'ans', sep=' ') }
je trouve une fonction qui permet de calculer l'age mais en .net
cette fonction nécessite la récupération de date système ( mois , jours , année)
donc le problème est de trouver l'équivalent de cette fonction mais en R langage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Protected Sub calcul_age() Dim datetimenow = DateTime.Now Dim datedenaissance = CDate(TbDn.Text) Dim age As Integer age = CInt(Now.Year - datedenaissance.Year) If (datedenaissance.Month > Now.Month) Then age = age - 1 End If If ((datedenaissance.Month = Now.Month) And (datedenaissance.Day > Now.Day)) Then age = age - 1 End If Me.Label3.Text = " Age : " & age & " ans" End Sub
Bonjour,
Pour vous éviter de trop tourner, la fonction qui retourne la date actuelle est Sys.Date(), pour l'aide sur cette fonction ?Sys.Date() (si vous programmez directement sous la console R, une petite pression sur la touche tab vous indique les fonctions et objets présents en mémoire qui contiennent ce que vous avez écrit jusque là (comme dans l'invite de commandes windows), ici avec Sys il vous proposera Sys.Date (entre autres).
À bientôt.
Ps: Site bien fait et qui aborde de nombreux sujets auxquels on peut être confronté en R http://www.duclert.org/Aide-memoire-...troduction.php
Bonjour,
Voici une fonction pour calculer l'âge entre 2 dates (qui sont passées en chaînes de caractères sous le format dd/mm/yyyy) :
Voici comment l'utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 calc_age <- function(from, to) { lt <- as.POSIXlt(c(from, to), format = "%d/%m/%Y") age <- lt$year[2] - lt$year[1] mons <- lt$mon + lt$mday/50 if(mons[2] < mons[1]) age <- age -1 age }
Et pour donner l'âge à partir d'une date en comparaison avec la date du jour, il suffit de passer la date du jour (Sys.date()) dans le bon format :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 > calc_age("15/12/2008", "25/12/2010") [1] 2 > calc_age("15/12/2008", "14/12/2010") [1] 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part calc_age("15/12/2008", format(Sys.Date(), "%d/%m/%Y"))
Rédacteur / Modérateur SGBD et R
Mes tutoriels et la FAQ MySQL
----------------------------------------------------
Pensez aux balises code et au tag
Une réponse vous a plu ? N'hésitez pas à y mettre un
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
merci pour votre réponse
donc maintenant je dois utiliser cette fonctiondans ma fonction principale
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 calc_age <- function(from, to) { lt <- as.POSIXlt(c(from, to), format = "%d/%m/%Y") age <- lt$year[2] - lt$year[1] mons <- lt$mon + lt$mday/50 if(mons[2] < mons[1]) age <- age -1 age }
lors de l'exécution cette erreur est affiché
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Affichage <- function() { print( "taper le nom" ) nom <- scan(nmax=1) print( "taper le prenom" ) prenom <- scan(nmax=1) print( "taper la date de naissance" ) dateNaissance <- scan(nmax=1) age <-calc_age(dateNaissance , format(Sys.Date(), "%d/%m/%Y")) paste('Bonjour je m\'appelle', nom,prenom, 'et j\'ai', age, 'ans', sep=' ') }il n'accepte que des valeurs numeriques
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Erreur dans scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : scan() attendait 'a real' et a reçu 'franco'
Je veux juste pouvoir saisir une chaine de caractères.
La saisie d'une valeur numérique se fait par la fonction scan() ou bien scan(nmax=..).
Mais ça ne marche pas pour une chaine de caractères.
Mon but est de saisir trois chaines : nom, prénom et date de naissance.
J'essaye avec ce code mais il m'affiche des erreurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 print( "taper le nom" ) nom <- scan(nmax=1) print( "taper le prenom" ) prenom <- scan(nmax=1) print( "taper la date de naissance" ) dateNaissance <- scan(nmax=1)
Le problème vient du fait que vous utilisez la fonction scan, qui attend un nombre, alors que pour la saisie d'une chaîne de caractères, c'est plutôt la fonction readLines qu'il faut utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 print( "taper le nom" ) nom <- readLines(n=1) print( "taper le prenom" ) prenom <- readLines(nmax=1) print( "taper la date de naissance" ) dateNaissance <- readLines(nmax=1)
Rédacteur / Modérateur SGBD et R
Mes tutoriels et la FAQ MySQL
----------------------------------------------------
Pensez aux balises code et au tag
Une réponse vous a plu ? N'hésitez pas à y mettre un
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
Au passage, readLines(n=1) peut aussi s'écrire readline(), plus simplement...
Rédacteur / Modérateur SGBD et R
Mes tutoriels et la FAQ MySQL
----------------------------------------------------
Pensez aux balises code et au tag
Une réponse vous a plu ? N'hésitez pas à y mettre un
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager