2 votes

Utilisation d'un élément vectoriel sélectionné comme opérateur

Si je définis un vecteur comme :

vec <- c("for", "paste")

Existe-t-il un moyen d'appliquer une sélection sur ce vecteur et d'utiliser le résultat comme un opérateur ? J'ai essayé comme ceci :

vec[1](i, 0:10, print("Hello"))

mais le résultat est une erreur :

Erreur : tentative d'appliquer une non-fonction

2voto

akrun Points 148302

Le premier élément de 'vec', c'est-à-dire for est une fonction Primitive, donc, nous pouvons ajouter .Primitive

.Primitive(vec[1])(i, 0:10, print("Hello"))

-sortie

#[1] "Hello"
#[1] "Hello"
#[1] "Hello"
#[1] "Hello"
#[1] "Hello"
#[1] "Hello"
#[1] "Hello"
#[1] "Hello"
#[1] "Hello"
#[1] "Hello"
#[1] "Hello"

tandis que paste n'est pas primitif. Le message de l'OP n'indique pas clairement le résultat attendu pour le deuxième élément. Avec match.fun on peut utiliser

match.fun(vec[2])(rep("Hello", 10), collapse=", ")
#[1] "Hello, Hello, Hello, Hello, Hello, Hello, Hello, Hello, Hello, Hello"

en supposant que le "PO" veuille paste 10 "Hello" en une seule chaîne

2voto

SmokeyShakers Points 2075

Comment ça ?

vec <- c("for", "paste")
do.call(vec[[1]], list(as.symbol('i'), 0:10, substitute(print('Hello'))))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X