将整个字符串打印到控制台,无需截断且无需调整全局设置

Dou*_*Fir 5 r

我已经阅读了这些关于让 rstudio 打印而不截断的帖子:

列表输出被截断 - 如何在 R 中使用 str() 扩展列出的变量

避免打印到控制台的字符串被截断(在 RStudio 中)

答案涉及对工作室设置进行调整,然后覆盖控制台的所有未来输出。

有没有一种特殊的方法可以让 r 将整个字符串打印到控制台?

我试过:

library(tidyverse)
library(foreach)

mystring <- foreach(i = 1:52) %do% {
  paste0("'_gaWeek",i,"'!A16:B;")
} %>% unlist %>% toString()

print(mystring, len = length(mystring))

> print(mystring, len = length(mystring))
[1] "'_gaWeek1'!A16:B;, '_gaWeek2'!A16:B;, '_gaWeek3'!A16:B;, '_gaWeek4'!A16:B;, '_gaWeek5'!A16:B;, '_gaWeek6'!A16:B;, '_gaWeek7'!A16:B;, '_gaWeek8'!A16:B;, '_gaWeek9'!A16:B;, '_gaWeek10'!A16:B;, '_gaWeek11'!A16:B;, '_gaWeek12'!A16:B;, '_gaWeek13'!A16:B;, '_gaWeek14'!A16:B;, '_gaWeek15'!A16:B;, '_gaWeek16'!A16:B;, '_gaWeek17'!A16:B;, '_gaWeek18'!A16:B;, '_gaWeek19'!A16:B;, '_gaWeek20'!A16:B;, '_gaWeek21'!A16:B;, '_gaWeek22'!A16:B;, '_gaWeek23'!A16:B;, '_gaWeek24'!A16:B;, '_gaWeek25'!A16:B;, '_gaWeek26'!A16:B;, '_gaWeek27'!A16:B;, '_gaWeek28'!A16:B;, '_gaWeek29'!A16:B;, '_gaWeek30'!A16:B;, '_gaWeek31'!A16:B;, '_gaWeek32'!A16:B;, '_gaWeek33'!A16:B;, '_gaWeek34'!A16:B;, '_gaWeek35'!A16:B;, '_gaWeek36'!A16:B;, '_gaWeek37'!A16:B;, '_gaWeek38'!A16:B;, '_gaWeek39'!A16:B;, '_gaWeek40'!A16:B;, '_gaWeek41'!A16:B;, '_gaWeek42'!A16:B;, '_gaWeek43'!A16:B;, '_gaWeek44'!A16:B;, '_gaWeek45'!A16:B;, '_gaWeek46'!A16:B;, '_gaWeek47'!A16:B;, '_gaWeek48'!A16:B;, '_gaWeek49'!A16:B;, '_gaWeek50'!A16:B;, '_ga... <truncated>
Run Code Online (Sandbox Code Playgroud)

它被截断了。是否有一种无需更改 rstudio 设置即可解决此问题的临时方法?比如通过函数参数?我print()在这里尝试过。

另外,如何去掉上面每个实例之间的逗号分隔符?

kab*_*nus 1

简短的答案是“否”,因为限制打印的选项位于IDE 本身中,您无法从程序本身控制它(我假设您不是这里的疯狂黑客),而不是语言功能。这就像试图阻止“WINDOWS”做事(尽管不是)。

在我看来,最简单的方法(临时)是将其打开,执行任何操作,然后将其关闭。如果你坚持不这样做,你需要编写自己的函数:

myprint<- function(somestring,idelimit=100) {
    for(i in seq(1,nchar(somestring),idelimit+1)) {
         print(substr(somestring,i,i+idelimit));
    }
}
Run Code Online (Sandbox Code Playgroud)

我不是一个流利的 R 编码员,所以如果您发现语法错误,请告诉我。这个想法很简单 -idelimit应该在工作室截断的任何地方(我任意选择 100),基本上你自己进行分割,这样字符串就可以逐行打印而不会被截断。每次您最多取出一部分idelimit并将somestring其打印出来。