【问题标题】:Is there a keyboard shortcut for %*% and %o% operators?%*% 和 %o% 运算符是否有键盘快捷键?
【发布时间】:2020-12-20 18:56:05
【问题描述】:

在 R 中,我们可以使用 %*% 进行内矩阵乘法,使用 %o% 进行外矩阵乘法。 他们每个人都有键盘快捷键吗?

【问题讨论】:

  • 只是好奇:这些已经很短了。您想要更少个字符的东西吗?有什么特别的原因吗? (代码打高尔夫球?)我怀疑这将是不可能的,因为解析器的限制......
  • 我想知道是否有一种方法可以更快地键入这些运算符。就像操作员%>% 一样,Windows 也有 Ctrl+Shift+M。而对于这 2 家运营商,还没有发现任何东西......
  • 我明白了;您正在寻找键盘快捷键。您必须指定您使用的 R 接口(我猜是 RStudio?)...答案可能在这里:support.rstudio.com/hc/en-us/articles/…

标签: r keyboard-shortcuts


【解决方案1】:

如果你的意思是写作时的快捷方式,你可以使用 RStudio sn-ps。 转到工具 > 全局选项 > 代码 > 编辑 sn-ps 然后你可以做类似的事情

snippet pprod
    ${1:X} %*% ${2:Y}

然后,在你的脚本中写pprod,就像使用libraryif 函数一样,它会自动显示出来。

奖励:使用选项卡,您可以从 X 切换到 Y 并替换为您想要的名称。

【讨论】:

    【解决方案2】:

    这些已经很短了,但是如果您愿意将表达式编写为字符串,然后编写一个函数将其转换为 R 并运行它,那么可以使用一个字符的简短形式。

    run <- function(s, mul = "@", out = "#", envir = parent.frame(), verbose = FALSE) {
      ss <- gsub(out, "%o%", gsub(mul, "%*%", s, fixed = TRUE), fixed = TRUE)
      if (verbose) print(ss)
      eval(parse(text = ss), envir)
    }
    
    v <- 1:3
    
    run("t(v) @ (v # v) @ v")
    

    还有许多实用程序允许使用预先指定的击键来插入定义的文本。这取决于您的操作系统,但在 Windows 上,这里列出了此类实用程序:https://www.raymond.cc/blog/insert-text-commands-easily-quicktextpaste/ 根据您使用的编辑器,它也可能具有此类功能。

    【讨论】:

      【解决方案3】:

      您可以使用shrtcts 包来完成此任务。它允许您将键盘快捷键分配给任意R 代码。

      1. 在 RStudio 控制台中使用命令 shrtcts::edit_shortcuts() 打开您定义自定义快捷方式的文件。

      2. 将以下代码粘贴到该文件中(在@shortcut 行中设置您的首选键绑定):

        #' Insert %*% Operator
        #'
        #' @description Insert %*% Operator at current Cursor Location
        #' @interactive
        #' @shortcut Cmd+R
        function() {
          rstudioapi::insertText(" %*% ") |>
            capture.output() |>
            invisible()
        }
        
      3. 在 RStudio 控制台中使用命令 shrtcts::add_rstudio_shortcuts(set_keyboard_shortcuts = TRUE) 添加新的快捷方式及其分配的键绑定。然后重启 RStudio。

      现在按下例如cmd+r 插入由单个空格包围的乘法运算符。 如果您不喜欢这些空格,只需在 rstudioapi::insertText() 函数中删除它们即可。

      类似地,您可以为%o%(或几乎任何东西)创建一个单独的快捷方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-07
        • 2011-08-22
        • 2012-12-22
        • 1970-01-01
        相关资源
        最近更新 更多