2017-10-03 6 views
0

Je suis nouveau dans le monde de la programmation en R et j'essaie de comprendre la logique de ces méthodes.Utilisation des noms de paramètres d'une fonction pour définir les noms de variables

  1. J'essaie de trouver une solution à la situation suivante:

    foo <- function(name){ 
        name <- sqlFetch(connection, name) 
    } 
    

    Je veux écrire une fonction qui importent des tables d'une base de données et les noms de la table importée comme son nom dans la base de données . E.g: Si je veux importer le tableau "voitures" ce tableau dans R devrait également appelé voitures.

    Comment est-il possible d'écrire une telle fonction? Cela devrait être la première partie de ma fonction.

  2. J'ai un autre caractère très simple en ce qui concerne les paramètres de ma fonction comme les noms de table ou quelque chose. En argument, j'utilise le nom entre guillemets. c'est-à-dire des "voitures" et non des voitures. Les devis sont-ils inclus si la fonction remplace le paramètre?

    Je demande parce que dans le sqlFetch vous devez placer les noms de table entre guillemets. Donc, quel type de fonction serait correct, le supérieur ou les éléments suivants:

    foo <- function(name){ 
        name <- sqlFetch(connection,"name") 
    } 
    
+2

Quel est exactement le problème que vous voulez résoudre? Parce que, tel qu'il est, il est difficile de comprendre pourquoi vous n'écririez pas simplement 'cars = sqlFetch (connection," cars ")'. –

+0

Au moins je veux écrire une fonction nommant et important une table d'une base de données dans R. Je peux simplement écrire votre exemple mais cela ne fonctionne pas comme fonction avec un paramètre à cause des guillemets que j'ai utilisés pour le paramètre. Si j'utilise la fonction comme ceci foo ("voitures") il remplace le nom par "voitures" (avec les guillemets), donc je ne peux pas définir le code comme dans l'exemple supérieur – Vala

+0

C'est précisément ma question: quelle fonctionnalité avez-vous vouloir encapsuler dans la fonction? Pourquoi avoir une fonction du tout, plutôt que d'écrire simplement le code que j'ai écrit dans mon commentaire initial? Je demande parce que la création de variables à l'intérieur des fonctions est une très mauvaise idée la plupart du temps. L'idée des fonctions R est d'être libre de tout effet secondaire. La seule chose qu'il modifie devrait être la valeur de retour. –

Répondre

-2

Je pense que c'est ce que vous cherchez

foo <- function(name){ 
    my_table <- name 
    assign(my_table, sqlFetch(connection,name)) 
} 
+1

S'il vous plaît ne pas écrire R comme ceci. C'est un mauvais code. Cela ne fonctionne pas non plus (mais c'est un problème réparable). –