R语言【cli】——通过cli_abort用 cli 格式的内容显示错误、警告或信息,内部调用cli_bullets和inline-makeup

本文主要是介绍R语言【cli】——通过cli_abort用 cli 格式的内容显示错误、警告或信息,内部调用cli_bullets和inline-makeup,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

cli_abort(message,...,call = .envir,.envir = parent.frame(),.frame = .envir
)

我先从那些不需要下大力气理解的参数入手:

        参数【.envir】:进行万能表达式编译的环境。

        参数【.frame】:抛出上下文。默认用于 .trace_bottom,当 .internal 为 TRUE 时,用于确定在内部错误中提及的内部软件包。

        参数【call】:当前运行函数的执行环境,例如 call = caller_env()。相应的函数调用会被检索出来,并在错误信息中作为错误源被提及。您只需要在从辅助函数抛出条件时提供调用即可,而无需在信息中提及。

        参数【...】:传递给rlang::abort(),rlang::warn()或rlang::warn()的参数。


以上都是不太需要进行修改的参数,所以本文的重点将放在参数【message】上。只需将希望输出的文本信息传递给参数【message】即可:

cli_abort(c("this is my error! Do not mess with R!"))

输出了警告信息:

Error:
! this is my error! Do not mess with R!
Run `rlang::last_trace()` to see where the error occurred.

        参数【message】:它是通过调用 cli_bullets()进行格式化的。进一步地,还需要调用 inline-makeup(内联标记)。


Package cli version 3.6.2

在cli_bullets()中内置定义了许多标记主题类型,只需要使用定义的主题名称:

cli_bullets()的内置标记
cli_bullets(c("noindent"))
noindent
没有任何前缀
cli_bullets(c(" " = "indent"))
  indent
缩进前缀
cli_bullets(c("*" = "bullet"))
• bullet
圆点前缀
cli_bullets(c(">" = "arrow"))
→ arrow
箭头前缀
cli_bullets(c("v" = "success"))
✔ success
对号前缀
cli_bullets(c("x" = "danger"))
✖ danger
错号前缀
cli_bullets(c("!" = "warning"))
! warning
惊叹号前缀
cli_bullets(c("i" = "info"))
ℹ info
信息前缀
cli_bullets() 和 cli_abort()的标记对比
cli_bullets(c("noindent"," " = "indent","*" = "bullet",">" = "arrow","v" = "success","x" = "danger","!" = "warning","i" = "info"
))
cli_abort(c("noindent"," " = "indent","*" = "bullet",">" = "arrow","v" = "success","x" = "danger","!" = "warning","i" = "info"
))

inline-markup可以让输出的信息更加多元,更加清晰。由R包cli输出的文本都支持万能语法插值,详见glue::glue()。cli支持通过使用类型名称对部分文本内容添加格式。例如:

cli_text("This is {.emph important}.")

上述代码给文本 "important" 添加了一个格式 "emph"。注意本例中大括号内的字符串通常不会是一个可运行的R表达式。如果打算运用插值,可以再使用一个大括号{}:

adjective <- "great"
cli_text("This is {.emph {adjective}}.")

每个inline类总会在内部创建一个span元素。所以使用主题时,可以通过span.emph的CSS选择器来改变文本的强调显示格式:

cli_div(theme = list(span.emph = list(color = "red")))
adjective <- "nice and red"
cli_text("This is {.emph {adjective}}.")

cli默认提供的主题

arg用于函数的参数
cls用于S3,S4,R6或其余类的名称
code用于一段代码
dt用于一个命名列表的元素,表格形式
dd用于一个命名列表的描述,表格形式
email用于email地址。如果输出终端支持ANSI超链接(比如RStudio,iTerm2等),那么cli就会生成一个可点击的链接。
emph用于突出显示文本
envvar用于环境变量的名称
field用于通用字段,比如一个命名列表
file用于文件名称。如果输出终端支持ANSI超链接(比如RStudio,iTerm2等),那么cli就会生成一个可点击的链接,点击后就会在RStudio打开该文件或在该文件类型的默认软件中打开。
fn用于函数名称。如果输入的是package::function_name形式,并且输出终端支持ANSI超链接(比如RStudio,iTerm2等),那么cli就会生成一个可点击的链接。
fun与fn相同
help用于函数的帮助页面。如果输出终端支持ANSI超链接至帮助页面(比如RStudio),那么cli就会生成一个可点击的链接。
href用于创建一个超链接,可能带有链接文本。如果输出终端支持ANSI超链接(比如RStudio,iTerm2等),那么cli就会生成一个可点击的链接。
kbd用于键盘键
key与kbd相同
obj_type_friendly用于以可读方式格式化 R 对象的类型,应与 {} 一起使用。
or将分隔折叠矢量最后两个元素的字符串从 "和 "改为 "或"。
path用于文件路径,与file相同。
pkg用于包的名称。
run用于R表达式,如果输出终端支持ANSI超链接至可运行的代码,那么该链接可能可以点击。
str双引号引用字符串
topic用于标题的帮助页面。
type用于以可读方式格式化 R 对象的类型,应与 {} 一起使用。
url用于网址。如果输出终端支持ANSI超链接(比如RStudio,iTerm2等),那么cli就会生成一个可点击的链接。
var用于变量名称。
val用于通用值。
vignette

用于插件。如果输出终端支持ANSI超链接(比如RStudio,iTerm2等),那么cli就会生成一个可点击的链接。

这篇关于R语言【cli】——通过cli_abort用 cli 格式的内容显示错误、警告或信息,内部调用cli_bullets和inline-makeup的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/519923

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结