首页 > 解决方案 > 如何指定运算符 %+% 的库,例如 pkg:: 或 pkg:::

问题描述

该运算符%+%用于两个包中,即ggplot2crayou

%+%中的功能crayon有时不起作用,我认为运算符%+%ggplot2. 我尝试识别,crayon::%+%但这不起作用。

cat(green(
 'I am a green line ' %+%
 blue$underline$bold('with a blue substring') %+%
 ' that becomes green again!'
))

----基于评论:我认为由于我的理解错误而发生了以下错误--------

我尝试使用crayon::(backtick)%+%(backtick)而不是运行以下代码%+%

cat(green(
    'I am a green line ' crayon::`%+%`
        blue$underline$bold('with a blue substring') crayon::`%+%`
        ' that becomes green again!'
))

但是会出现以下错误:

  > cat(green(
+     'I am a green line ' crayon::`%+%`
Error: unexpected symbol in:
"cat(green(
    'I am a green line ' crayon"
>         blue$underline$bold('with a blue substring') crayon::`%+%`
Error: unexpected symbol in "        blue$underline$bold('with a blue substring') crayon"
>         ' that becomes green again!'
[1] " that becomes green again!"
> ))
Error: unexpected ')' in ")"

标签: rggplot2

解决方案


一种选择是不library(crayon)requireNamespace(crayon)完全限定所有crayon参考文献:

cat(crayon::green(
  'I am a green line ' %c+%
    crayon::blue$underline$bold('with a blue substring') crayon::`%+%`
    ' that becomes green again!'
))

不过,这很烦人。因此,您还可以手动导入和重命名您需要的东西,而无需单独的非核心包

`%c+%` <- getFromNamespace("%+%", "crayon") # changed to not break other things
green <- getFromNamespace("green", "crayon")
blue <- getFromNamespace("blue", "crayon")

cat(green(
  'I am a green line ' %c+%
    blue$underline$bold('with a blue substring') %c+%
    ' that becomes green again!'
))

推荐阅读