web-dev-qa-db-fra.com

Accéder à la valeur de la variable où le nom de la variable est stocké dans une chaîne

Des questions similaires ont été posées pour d'autres langues: C , sql , Java , etc.

Mais j'essaye de faire ça dans R.

J'ai:

ret_series <- c(1, 2, 3)
x <- "ret_series"

Comment puis-je obtenir (1, 2, 3) en appelant une fonction/manipulation sur x, sans mentionner directement ret_series?

51
Zhang18

Vous avez fourni la réponse dans votre question. Essayez get.

> get(x)
[1] 1 2 3
70
Joshua Ulrich

Pour une utilisation ponctuelle, la fonction get fonctionne (comme cela a été mentionné), mais elle ne s'adapte pas bien aux grands projets. il est préférable de stocker vos données dans des listes ou des environnements, puis utilisez [[pour accéder aux éléments individuels:

mydata <- list( ret_series=c(1,2,3) )
x <- 'ret_series'

mydata[[x]]
18
Greg Snow

Quel est le problème avec l'un des éléments suivants?

eval(as.name(x))

eval(as.symbol(x))
5
RomanM

Notez que certains des exemples ci-dessus ne fonctionneraient pas pour un data.frame.

Par exemple, étant donné

x <- data.frame(a=seq(1,5))

get("x$a") ne vous donnerait pas x$a.

1
mm441