You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.6KB

  1. #' Etiquetter un objet
  2. #'
  3. #' Attribuer ou recuperer l'etiquette d'un objet
  4. #'
  5. #' Methode par defaut pour acceder et modifier l'etiquette d'un objet ou d'un element d'un objet.
  6. #' Il est possible de supprimer l'etiquette en passant NULL a la fonction.
  7. #' @rdname label
  8. #' @encoding UTF-8
  9. #' @param objet L'objet a nommer
  10. #' @param value Le texte de l'etiquette
  11. #' @return Renvoie une chaine de caracteres contenant l'etiquette de l'objet
  12. #' @examples
  13. #' a <- c(18,25,23,32)
  14. #'
  15. #' label(a) <- "Age"
  16. #' label(a)
  17. #' # Renvoie "Age"
  18. #'
  19. #' label(a) <- NULL # Supprime le label
  20. #'
  21. #' df <- data.frame(a=25, b="H")
  22. #' label(df) <- c(a="Age",b="Sexe")
  23. #' @export
  24. label <- function(objet) UseMethod("label")
  25. #' @rdname label
  26. #' @export
  27. label.default <- function(objet)
  28. {
  29. if (missing(objet))
  30. NULL
  31. else if (is.null(attr(objet,"label")))
  32. deparse(substitute(objet))
  33. else
  34. attr(objet,"label")
  35. }
  36. #' @rdname label
  37. #' @export
  38. "label<-" <- function(objet,value) UseMethod("label<-")
  39. #' @rdname label
  40. #' @export
  41. "label<-.default" <- function(objet,value)
  42. {
  43. attr(objet,"label")<-value[[1]]
  44. if (length(value)>1) warning("label : vecteur de longueur 1")
  45. objet
  46. }
  47. #' @rdname label
  48. #' @export
  49. "label<-.data.frame" <- function(objet,value)
  50. {
  51. if (length(value)==1 && is.null(names(value)))
  52. {
  53. objet<-unclass(objet)
  54. label(objet)<-value
  55. class(objet)="data.frame"
  56. }
  57. else
  58. {
  59. if (!is.null(names(value)))
  60. {
  61. for (nom in names(value))
  62. {
  63. if (is.null(objet[[nom]]))
  64. warning(paste(nom,"n'est pas un element"))
  65. else
  66. label(objet[[nom]])<-value[[nom]]
  67. }
  68. }
  69. }
  70. objet
  71. }