是否可以在R?
中缩进输出e.g。
cat("text1\n")
indent.switch(indent=4)
cat("random text\n")
print("another random text")
indent.switch(indent=0)
cat("text2\n")
导致
text1
random text
another random text
text2
几个月前我搜索过这个,没找到任何东西,现在又在搜索。
我目前的想法是“覆盖”(我忘记了特殊用语)函数cat
和/或print
以及其他参数,如:
cat("random text", indent=4)
只有我坚持这个,我不喜欢这个程序。 有什么想法吗?
编辑: 我应该更加特别,但是谢谢你的\ t(omg,我完全忘了这个-.-)并且我可以在cat中格式化它。 给定的解决方案有效,但只能解决我的第二选择路径。 我想,我的第一个代码示例中显示的开关不存在?
我的问题是我有一个更大程序的部分有多个下标,每个下标的输出应该缩进。这是绝对可能的“\ t”或只是cat()内的空白,但必须在每个命令中完成,我不太喜欢。
解决方案
我使用了Chris C的代码并以非常简单的方式扩展了它。 (非常感谢克里斯!)
define.catt <- function(ntab = NULL, nspace=NULL){
catt <- function(input = NULL){
if(!is.null(ntab)) cat(paste0(paste(rep("\t", ntab), collapse = ""), input))
if(!is.null(nspace)) cat(paste0(paste(rep(" ", nspace), collapse = ""), input))
if(is.null(ntab) && is.null(nspace)) cat(input)
}
return(catt)
}
答案 0 :(得分:2)
与使用\n
打印换行符的方式相同,您可以使用\t
打印标签。
E.g。
cat("Parent level \n \t Child level \n \t \t Double Child \n \t Child \n Parent level")
评估到
Parent level
Child level
Double Child
Child
Parent level
作为替代方案,您可以创建名为cat
的{{1}}衍生产品,并根据脚本更改选项。例如。
catt
然后,您可以使用
所需的多个标签设置define.catt <- function(ntab = NULL){
catt <- function(input = NULL){
cat(paste0(paste(rep("\t", ntab), collapse = ""), input))
}
return(catt)
}
catt
只需使用catt <- define.catt(ntab = 1)
catt("hi")
hi
catt <- define.catt(ntab = 2)
catt("hi")
hi
代替catt()
。
答案 1 :(得分:1)
你可以考虑一个多功能的功能capture.output(...)
,它会评估&#39; ...
&#39;作为主输入参数提供的表达式列表,并将文本输出(就像它将在控制台中显示一样)存储到字符向量中。然后,您只需要根据需要修改字符串:在这里,您要为每个字符串添加一些前导空格。最后,将字符串写入控制台。
这些可以在一行嵌套调用中完成。例如:
writeLines(paste(" ", capture.output(print(head(iris))), sep=""))
因此,我建议大家阅读capture.output
函数的帮助,然后尝试将其用于各种目的。实际上,由于主要输入具有...
&#39; paste
&#39;类似于列表的结构,你可以自由地包括,例如,调用一个自制函数,因此几乎可以做任何事情。至于缩进,只需用function areEqual(a, b) {
if ( a.length != b.length) {
return false;
}
return a.filter(function(i) {
return !b.includes(i);
}).length === 0;
}
函数完成,一旦前者完成了它的魔力。