问题
I'm having a problem with using double quotes while formatting text strings being sent to functions in R.
Consider an example function code:
foo <- function( numarg = 5, textarg = "** Default text **" ){
print (textarg)
val <- numarg^2 + numarg
return(val)
}
when running with the following input:
foo( 4, "Learning R is fun!" )
The output is:
[1] "Learning R is fun!"
[1] 20
But when I try (in various ways, as suggested here) to write "R" instead of R, I get the following outputs:
> 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
Using as.character(...)
or dQuote(...)
as suggested here seems to break the function because of different number of arguments.
回答1:
You can try these approaches:
foo <- function(numarg = 5, textarg = "** Default text **" ){
cat(c(textarg, "\n"))
val <- (numarg^2) + numarg
return(val)
}
foo <- function(numarg = 5, textarg = "** Default text **" ){
print(noquote(textarg))
val <- (numarg^2) + numarg
return(val)
}
foo( 4, "Learning R is fun!" )
foo( 4, 'Learning "R" is fun!' )
回答2:
Two ways I know. First is to just use single quotes to start and end the character string:
> cat( 'Learning "R" is fun!' )
Learning "R" is fun!
Second is to escape the double quotes:
> cat( "Learning \"R\" is fun!" )
Learning "R" is fun!
Note that this works because I use cat
, which is intended to output strings to the console. It seems you use print()
which shows the object rather than output it
来源:https://stackoverflow.com/questions/13449233/send-a-text-string-containing-double-quotes-to-function