Je souhaite lire un ensemble d'ensembles de données (par exemple * .dta) avec un préfixe spécifique et un modèle de nombre croissant dans l'environnement global, et les combiner dans une liste. (Dans ce cas particulier, ils sont tous de même dimension.)Comment lire plusieurs ensembles de données avec un modèle de préfixe spécifique dans un environnement global?
Traditionnellement code I:
library(foreign) # for reading *.dta files
df_1 <- read.dta("df_1.dta")
df_2 <- read.dta("df_2.dta")
...
df_n <- read.dta("df_n.dta") # note: consider 'n' being an arbitrary defined integer
df_lst <- mget(ls(pattern = "df[0-9]")) # combine dfs into list
Maintenant, je veux y arriver en une seule étape brève.
cette boucle I essayé qui ne fonctionne pas - le plus probable en raison de la définition d'une variable entre guillemets:
# initialize list
df_lst <- list()
# read and combine dfs into list
i <- 0
while(i < n) {
i = i + 1
df_[i] = read.dta("df_[i].dta")
c(df_lst, df[i])
}
De plus je préfère préfèrent une fonction d'une boucle.
Comment puis-je atteindre mon objectif?
Tout simplement génial! Comment puis-je définir le répertoire? Par exemple. 'rio :: import_list (dir (pattern =" data/df [0-9] "))' semble ne pas fonctionner. – jaySf
(Lève "Erreur dans if (! Grepl ("^http. *: // ", fichier)) {: l'argument est de longueur zéro".) – jaySf
Sont-ils dans un sous-répertoire? Ensuite, vous avez probablement besoin de quelque chose comme 'dir (" ./ data ", pattern =" df [0-9 ", full.names = TRUE)' Je suppose. Fondamentalement, cet argument de 'import_list()' devrait juste être un vecteur de chemins de fichiers relatifs ou absolus. – Thomas