2 votes

Quelle est la meilleure pratique pour faire référence à la valeur d'un autre objet en dehors de la fonction list() ?

J'ai évité la question de la compréhension de ce problème pendant des années, mais j'arrive à un niveau d'expérience où je dois être capable d'écrire quelque chose comme ça et de le faire fonctionner. Je crois qu'on m'a dit que cela avait à voir avec l'évaluation et la portée.

   ICD10 <- paste("^", c("DF17", "DZ720", paste("DJ", seq(40,44,1), sep = ""), "D716"), sep ="")
  ICD8 <- c()
  ATC <- c("^R03", "^N07BA")
 variableName <- c("smokingMarker")

VariableDefinor <- list( variableName = 
                list(ICD10 = ICD10, 
                      ICD8 = ICD8, 
                      ATC = ATC) 
)

En gros, le code ci-dessus s'exécute et crée une liste appelée VariableDefinor. Mais la liste à l'intérieur a le nom variableName plutôt que "smokingMarker" . Je pense que je peux voir ce qui ne va pas, mais je n'arrive pas à trouver comment résoudre ce problème. J'ai examiné des fonctions comme paste do.call y as.name mais je n'arrive pas à comprendre. Il semble qu'il y ait quelque chose de très basique que je ne comprends pas. J'apprécierais grandement que l'on m'aide à résoudre ce problème et que l'on m'indique où je peux apprendre ce que je ne comprends pas.

3voto

akrun Points 148302

Une option est := con dplyr::lst

dplyr::lst(!! variableName :=  dplyr::lst(ICD10, ICD8, ATC))

-sortie

#$smokingMarker
#$smokingMarker$ICD10
#[1] "^DF17"  "^DZ720" "^DJ40"  "^DJ41"  "^DJ42"  "^DJ43"  "^DJ44"  "^D716" 

#$smokingMarker$ICD8
#NULL

#$smokingMarker$ATC
#[1] "^R03"   "^N07BA"

Sur base R ce qui peut également être fait avec setNames

setNames(list(list(ICD10 = ICD10,
           ICD8 = ICD8,
           ATC = ATC)), variableName)

2voto

G. Grothendieck Points 40825

Utilisez mget pour former la liste intérieure et setNames/list pour former la liste extérieure. Aucun paquet n'est utilisé.

setNames(list(mget(c("ICD10", "ICD8", "ATC"))), variableName)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X