web-dev-qa-db-fra.com

Charger un ensemble de données dans R avec data () en utilisant une variable à la place du nom de l'ensemble de données

J'essaie de charger un ensemble de données dans R à l'aide de la fonction data (). Cela fonctionne bien lorsque j'utilise le nom du jeu de données (par exemple, data(Titanic) ou data("Titanic")). Ce qui ne fonctionne pas pour moi, c'est de charger un jeu de données en utilisant une variable au lieu de son nom. Par exemple:

# This works fine:
> data(Titanic)

# This works fine as well:
> data("Titanic")

# This doesn't work:
> myvar <- Titanic
> data(myvar)
**Warning message:
In data(myvar) : data set ‘myvar’ not found**

Pourquoi R recherche-t-il un jeu de données nommé "myvar" car il n’est pas cité? Et puisque c’est le comportement par défaut, n’est-il pas possible de charger un jeu de données stocké dans une variable?

Pour mémoire, ce que je cherche à faire est de créer une fonction qui utilise le paquetage "arules" et les règles d’association des mines en utilisant Apriori. Par conséquent, je dois passer l'ensemble de données en tant que paramètre à cette fonction.

myfun <- function(mydataset) {
    data(mydataset)    # doesn't work (data set 'mydataset' not found)
    rules <- apriori(mydataset)
}

edit - sortie de sessionInfo ():

> sessionInfo()
R version 3.0.0 (2013-04-03)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] arules_1.0-14   Matrix_1.0-12   lattice_0.20-15 RPostgreSQL_0.4 DBI_0.2-7      

loaded via a namespace (and not attached):
[1] grid_3.0.0  tools_3.0.0

Et les erreurs réelles que je reçois (en utilisant, par exemple, un exemple de jeu de données "xyz"):

xyz <- data.frame(c(1,2,3))
data(list=xyz)
Warning messages:
1: In grep(name, files, fixed = TRUE) :
  argument 'pattern' has length > 1 and only the first element will be used
2: In grep(name, files, fixed = TRUE) :
  argument 'pattern' has length > 1 and only the first element will be used
3: In if (name %in% names(rds)) { :
  the condition has length > 1 and only the first element will be used
4: In grep(name, files, fixed = TRUE) :
  argument 'pattern' has length > 1 and only the first element will be used
5: In if (name %in% names(rds)) { :
  the condition has length > 1 and only the first element will be used
6: In grep(name, files, fixed = TRUE) :
  argument 'pattern' has length > 1 and only the first element will be used

...

...

32: In data(list = xyz) :
  c("data set ‘1’ not found", "data set ‘2’ not found", "data set ‘3’ not found")
12
pazof

Utilisez l'argument list. Voir ?data.

data(list=myvar)

Vous aurez également besoin de myvar pour être une chaîne de caractères.

myvar <- "Titanic"

Notez que myvar <- Titanic a seulement fonctionné (je pense) à cause du chargement paresseux du jeu de données Titanic. La plupart des ensembles de données dans les packages sont chargés de cette manière, mais pour d'autres types d'ensembles de données, vous aurez toujours besoin de la commande data.

14
Aaron

Utilisez la variable comme caractère. Sinon, vous allez traiter le contenu de "Titanic" plutôt que son nom. Vous devrez peut-être également utiliser get pour convertir la valeur du caractère en nom d'objet.

myvar <- 'Titanic'

myfun <- function(mydataset) {
    data(list=mydataset)   
    str(get(mydataset))
}

myfun(myvar)
4
42-

Si le package a été chargé, vous pouvez utiliser la fonction get () pour affecter le fichier à une variable locale:

data_object = get(myvar, asNamespace('<package_name>'))

ou simplement:

data_object = get(myvar)
0
jciloa

Assign_Name <- read.csv (file.choose ())

Cette ligne de code ouvre votre ordinateur local, il vous suffit de sélectionner le jeu de données que vous souhaitez charger

0
Parthiban M