我想在R中选择包含内部引号作为单个对象的多行字符串。但是,我希望在对象内保留空格,换行符和双引号"
(以及任何单引号'
)。
到目前为止,我尝试过的所有字符串函数(例如cat
,quote
,paste
print
)都不起作用。除非我将代码包装在writeClipboard
(双引号)中,否则使用"
之类的函数不会起作用。
"
会干扰包裹"
。 这是一个使用writeClipboard的例子(因为这是我的最终目标):
这不起作用:
writeClipboard(
"
x <- 1 + 2
y <- "string" #I'm adding a random string surrounded by ""
z <- function(x,y) {
paste(x,y)
}
z(x,y)
"
)
此确实有效(但我被迫将所有"
更改为'
):
writeClipboard(
"
x <- 1 + 2
y <- 'string' #I'm adding a random string surrounded by ''
z <- function(x,y) {
paste(x,y)
}
z(x,y)
"
)
有没有办法拯救&#34;多行字符串将空格,换行符以及混合的'
和"
字符组合成一个字符串?
writeClipboard()
这样做感兴趣,但也会赞赏更一般的答案!谢谢!
答案 0 :(得分:1)
基于deparse(quote(...))
模式(丑陋的paste(head(tail(...
包装器用于摆脱额外的花括号):
code_ <- paste(head(tail(deparse(quote({
x <- 1 + 2
y <- "string" #I'm adding a random string surrounded by ""
z <- function(x,y) {
paste(x,y)
}
z(x,y)
})), - 1), - 1), collapse = "\n")
cat(code_)
# x <- 1 + 2
# y <- "string"
# z <- function(x, y) {
# paste(x, y)
# }
# z(x, y)
print(code_)
# [1] " x <- 1 + 2\n y <- \"string\"\n z <- function(x, y) {\n paste(x, y)\n }\n z(x, y)"
writeClipboard(code_)