我试图删除生成的“\”,因此我运行 cat() 来清除它。但需要将该输出分配给一个变量,以便稍后在 gsubfn 字符串中匹配。
>topheader <-'<div id="editor1" class="shinytinymce shiny-bound-input"
style="resize: none; width: 100%; height: 100%; border-style: none;
background: gainsboro;">'
>topheader
[1] "<div id=\"editor1\" class=\"shinytinymce shiny-bound-input\"
style=\"resize: none; width: 100%; height: 100%; border-style: none;
background: gainsboro;\">"
>cat(topheader)
[1] <div id="editor1" class="shinytinymce shiny-bound-input" style="resize:
none; width: 100%; height: 100%; border-style: none; background:
gainsboro;">
> test<-cat(topheader)
> test
NULL
Run Code Online (Sandbox Code Playgroud)
正如注释中已经指出的,将 的输出分配cat给变量不会对您有帮助,因为字符\(称为转义字符)实际上并不存在于字符串中。当您将字符串输出到控制台时,它们只是以这种方式打印。
然而,为了其他因不同原因尝试分配 cat 输出的人的利益,需要更完整的答案。 cat确实有一些用于格式化输出的有用功能,有人可能有将其存储在变量中的有效需求。在这些情况下,我们可以使用capture.output它来实现这一点。例如,
cat(paste(letters, 100* 1:26), fill = TRUE, labels = paste0("{", 1:10, "}:"))
Run Code Online (Sandbox Code Playgroud)
产生以下输出,方便地按照控制台的宽度分成编号行:
# {1}: a 100 b 200 c 300 d 400 e 500 f 600 g 700 h 800 i 900
# {2}: j 1000 k 1100 l 1200 m 1300 n 1400 o 1500 p 1600
# {3}: q 1700 r 1800 s 1900 t 2000 u 2100 v 2200 w 2300
# {4}: x 2400 y 2500 z 2600
Run Code Online (Sandbox Code Playgroud)
我们可以通过以下方式捕获这个输出
x = capture.output(
cat(paste(letters, 100* 1:26), fill = TRUE, labels = paste0("{", 1:10, "}:"))
)
Run Code Online (Sandbox Code Playgroud)
它创建一个字符向量 x,其中每个元素对应于输出的一行:
# [1] "{1}: a 100 b 200 c 300 d 400 e 500 f 600 g 700 h 800 i 900 "
# [2] "{2}: j 1000 k 1100 l 1200 m 1300 n 1400 o 1500 p 1600 "
# [3] "{3}: q 1700 r 1800 s 1900 t 2000 u 2100 v 2200 w 2300 "
# [4] "{4}: x 2400 y 2500 z 2600"
Run Code Online (Sandbox Code Playgroud)
如果您愿意,可以使用以下方法将此向量折叠成一个用换行符分隔的单个字符串:
x = paste0(x, collapse = '\n')
Run Code Online (Sandbox Code Playgroud)