2017-05-15 1 views
0

J'essaie de permettre à l'utilisateur de définir combien d'utilisateurs de données de médicaments veulent télécharger pour une thérapie spécifique. Sur la base de ce nombre, ma fonction veut permettre à l'utilisateur de sélectionner des données pour ces nombreux médicaments et de les stocker en utilisant des variables, par ex. drug_1_data, drug_2_data, etc. j'ai écrit un code, mais il ne fonctionne pas Quelqu'un pourrait-il aider s'il vous plaîttéléchargement de fichiers interactifs multiples dans différentes variables en utilisant R

no_drugs <- readline("how many drugs for this therapy? Ans:") 
i=0 

while(i < no_drugs) { 
    i <- i+1 
    caption_to_add <- paste("drug",i, sep = "_") 
    mydata <- choose.files(caption = caption_to_add) # caption describes data for which drug 
    file_name <- noquote(paste("drug", i, "data", sep = "_")) # to create variable that will save uploaded .csv file 
    file_name <- read.csv(mydata[i],header=TRUE, sep = "\t") 
    } 

Répondre

0

Dans votre exemple, mydata est une chaîne d'éléments, donc des sous-ensembles avec i plus grand que 1 retourneront NA. En outre, dans votre première affectation de file_name, vous le définissez sur un vecteur de caractère non cité, puis vous l'écrasez avec des données (et à chaque itération de la boucle, vous perdez les données que vous avez créées à l'étape précédente). Je pense que ce que vous vouliez était quelque chose de plus dans la ligne de:

file_name <- paste("drug", i, "data", sep = "_") 
assign(file_name, read.delim(mydata, header=TRUE) 
# I changed the function to read.delim since the separator is a tab 

Cependant, je recommande aussi de penser à mettre l'ensemble des données dans une liste (il pourrait être plus facile d'effectuer des opérations sur plusieurs dataframes de drogue comme ça), en utilisant quelque chose comme ceci:

n_drugs <- as.numeric(readline("how many drugs for this therapy? Ans:")) 
drugs <- vector("list", n_drugs) 

for(i in 1:n_drugs) { 
    caption_to_add <- paste("drug",i, sep = "_") 
    mydata <- choose.files(caption = caption_to_add) 
    drugs[i] <- read.delim(mydata,header=TRUE) 

} 
+0

Merci. Cela fonctionne –

+0

Heureux d'aider, et bienvenue à Stack Overflow. Si cette réponse ou un autre a résolu votre problème, veuillez le marquer comme accepté. – Sraffa