r |将CAT()输出分配给变量



我正在尝试删除生成的'',因此我运行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

如注释中已经指出的,将cat的输出分配给变量无济于事,因为字符(称为逃生字符)实际上不存在字符串。当您将字符串输出到控制台时,它们只是以这种方式打印。

但是,为了其他因其他原因分配猫输出的人的好处,有必要提供更完整的答案。cat确实具有一些用于格式化输出的有用功能,某人可能需要将其存储在变量中。在这些情况下,我们可以使用capture.output实现这一目标。例如,

cat(paste(letters, 100* 1:26), fill = TRUE, labels = paste0("{", 1:10, "}:"))

产生以下输出,方便地分为控制台宽度的编号线:

# {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

我们可以通过

捕获此输出
x = capture.output(
      cat(paste(letters, 100* 1:26), fill = TRUE, labels = paste0("{", 1:10, "}:"))
    )

创建一个字符向量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"  

如果您愿意,可以使用以下方式将此矢量折叠成一个单个字符串:

x = paste0(x, collapse = 'n')

最新更新