J'ai un cas d'utilisation où j'essaie de lancer appel mon Rscript sur un tas de fichiers. Je l'ai écrit l'extrait ci-dessous -Calcul parallèle en R pour les commandes shell
for(i in 1:length(fileNames)){
generateTolerancesCommand = paste(c("Rscript ",modelScriptName,
" --inp=",paste(c("'",dimensionsFolder, "/", fileNames[i],"'"), collapse = ""),
" --sea=",seasonal,
" --freq=",freq,
" --outp=",paste(c("'",outputFolder,"/","'"), collapse=""),
" --tp=",tp,
" --sd=",sd,
" --end=",end,
" --op=",op,
" --tls=",tls,
" --pts=",pts,
" --userf=",paste(c("'",dimensionsFeedbackFolder, "/", fileNames[i],"'"), collapse = "")
),collapse="")
system(generateTolerancesCommand)
}
Cela fonctionne très bien, mais il prend habituellement environ 3-4 minutes pour 1 boucle pour terminer finalement prendre environ 2 heures actuellement pour terminer le script. Je pense que je peux le faire mieux en le rendant parallèle. Dans chaque itération, je produis un extrait indépendant de l'exécution R qui peut fonctionner sur un ensemble de données indépendant. J'ai essayé de lire sur des bibliothèques parallèles comme parallel, doParallel dans R, mais je ne suis pas en mesure de comprendre la meilleure façon qui peut être appliquée pour mon utilisation. Quelqu'un d'expérimenté dans ce domaine peut-il me suggérer un moyen?
Vos scripts retournent quelque chose? Ecrire à l'env global? Que veux-tu en tirer? –
Oui, ils produisent une sortie dans le dossier défini transmis en tant qu'argument de ligne de commande. –
FYI, au lieu d'ajouter manuellement des guillemets shell, utilisez 'shQuote (str)'; il est spécifique au système d'exploitation et prend soin d'échapper certains caractères, etc. – HenrikB