我正在编写一个小程序,想知道是否有办法在 R 中包含 ASCII 艺术。我在 python 中寻找等效的三个引号( """
或 '''
)。
我尝试使用 cat
或 print
但没有成功。
最佳答案
不幸的是,R 只能使用单引号或双引号来表示文字字符串,这使得表示 ascii 艺术很尴尬;但是,您可以执行以下操作来获取您的艺术作品的文本表示,该文本表示可以使用 R 的 cat
函数输出。
1) 首先将您的艺术作品放入一个文本文件中:
# ascii_art.txt is our text file with the ascii art
# For test purposes we use the output of say("Hello") from cowsay package
# and put that in ascii_art.txt
library(cowsay)
writeLines(capture.output(say("Hello"), type = "message"), con = "ascii_art.txt")
2) 然后读入文件并使用 dput
:art <- readLines("ascii_art.txt")
dput(art)
这给出了这个输出:c("", " -------------- ", "Hello ", " --------------", " \\",
" \\", " \\", " |\\___/|", " ==) ^Y^ (==",
" \\ ^ /", " )=*=(", " / \\",
" | |", " /| | | |\\", " \\| | |_|/\\",
" jgs //_// ___/", " \\_)", " ")
3) 最后在你的代码中写:art <- # copy the output of `dput` here
所以你的代码将包含这个:art <-
c("", " -------------- ", "Hello ", " --------------", " \\",
" \\", " \\", " |\\___/|", " ==) ^Y^ (==",
" \\ ^ /", " )=*=(", " / \\",
" | |", " /| | | |\\", " \\| | |_|/\\",
" jgs //_// ___/", " \\_)", " ")
4) 现在,如果我们只是 cat
art
变量,它会显示:> cat(art, sep = "\n")
--------------
Hello
--------------
\
\
\
|\___/|
==) ^Y^ (==
\ ^ /
)=*=(
/ \
| |
/| | | |\
\| | |_|/\
jgs //_// ___/
\_)
添加这是几年后的补充。在 R 4.0 中,有一种新语法使这更容易。参见
?Quotes
例如:
hello <- r"{
--------------
Hello
--------------
\
\
\
|\___/|
==) ^Y^ (==
\ ^ /
)=*=(
/ \
| |
/| | | |\
\| | |_|/\
jgs //_// ___/
\_)
}"
cat(hello)
给予: --------------
Hello
--------------
\
\
\
|\___/|
==) ^Y^ (==
\ ^ /
)=*=(
/ \
| |
/| | | |\
\| | |_|/\
jgs //_// ___/
\_)
关于r - 在 R 中包含 ASCII 艺术,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33628744/