Envoyer une chaîne de texte contenant des guillemets pour fonction
Je vais avoir un problème avec l'aide de guillemets doubles alors que le formatage des chaînes de texte envoyés à des fonctions dans l'arrêt R.
Prenons comme exemple le code de la fonction:
foo <- function( numarg = 5, textarg = "** Default text **" ){
print (textarg)
val <- numarg^2 + numarg
return(val)
}
lors de l'exécution de la manière suivante:
foo( 4, "Learning R is fun!" )
La sortie est:
[1] "Learning R is fun!"
[1] 20
Mais quand j'essaie (de diverses manières, comme l'a suggéré ici) pour écrire "R" au lieu de R, j'obtiens les résultats suivants:
> foo( 4, "Learning R is fun!" )
[1] "Learning R is fun!"
[1] 20
> foo( 4, "Learning "R" is fun!" )
Error: unexpected symbol in "funfun( 4, "Learning "R"
> foo( 4, "Learning \"R\" is fun!" )
[1] "Learning \"R\" is fun!"
[1] 20
> foo( 4, 'Learning "R" is fun!' )
[1] "Learning \"R\" is fun!"
[1] 20
À l'aide de as.character(...)
ou dQuote(...)
comme l'a suggéré ici semble se décomposer la fonction en raison de différents nombre d'arguments.
OriginalL'auteur Khaloymes | 2012-11-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ces approches:
cat(textarg, "\n")
au lieu de formater le résultat sous forme de tableau à l'aide decat(c(textarg, "\n")
. Qui est-il préférable?OriginalL'auteur Tyler Rinker
Deux façons que je connais. La première est de simplement utiliser les guillemets simples de début et de fin de la chaîne de caractères:
Deuxième est d'échapper les guillemets:
Notez que cela fonctionne car je l'utilise
cat
, qui est destiné aux chaînes de sortie de la console. Il semble que vous utilisezprint()
qui montre l'objet plutôt que de sortie, ilcat
lors de l'envoi du texte à la fonction, le texte est formaté correctement (en utilisant l'un de vos suggestions), seulement cette fois, c'sortiesLearning "R" is fun!NULL
au lieu deLearning "R" is fun!
. Aucune idée de la façon de mettre fin à cetteNULL
plus? (Et, encore plus important, une idée d'où vient-elle?)OriginalL'auteur Sacha Epskamp