AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 77671466
Accepted
TarJae
TarJae
Asked: 2023-12-16 23:26:57 +0800 CST2023-12-16 23:26:57 +0800 CST 2023-12-16 23:26:57 +0800 CST

我们如何将注释和新行代码放在同一行

  • 772

没有什么特殊的背景,我只是好奇是否有这方面的考虑:

据我所知,在 R 中,不可能在同一行上包含注释和新代码行,请参阅注释 @Ben Bolker,如本示例所示:

在此输入图像描述

我在2018 年 stackoverflow 和2022 年 stackoverflow中找到了这个。后者使用的自定义函数%com%对我来说不起作用:

library(dplyr)

`%com%` <- function(lhs, rhs){
  lhs #rhs
}

mtcars %>% 
  select(cyl, mpg, %com%am, wt) %>% 
  head()

Error: unexpected SPECIAL in:
"mtcars %>% 
  select(cyl, mpg, %com%"

我通常喜欢:

mtcars %>% 
  select(cyl, mpg, 
         #am, 
         wt) %>% 
  head()
  • 2 2 个回答
  • 48 Views

2 个回答

  • Voted
  1. Best Answer
    2023-12-17T00:30:01+08:002023-12-17T00:30:01+08:00

    R 的注释功能被硬编码到解析器中。我们无法真正欺骗解析器,但我们可以给用户一种我们是这样的错觉。我们可以建立一个系统,通过符号.%\%'打开评论并'%\%.关闭它。

    例如:

    mtcars %>% 
      select(cyl, mpg, .%\%' am, wt '%\%.) %>% 
      head()
    #>                   cyl  mpg
    #> Mazda RX4           6 21.0
    #> Mazda RX4 Wag       6 21.0
    #> Datsun 710          4 22.8
    #> Hornet 4 Drive      6 21.4
    #> Hornet Sportabout   8 18.7
    #> Valiant             6 18.1
    

    实现会是这样的:

    `%\\%` <- function(a, b) {
      
      mc <- as.list(match.call())
      if(deparse(mc$a) == "." & deparse(mc$b) == ".") return(invisible(NULL))
      if(deparse(mc$a) != "." & deparse(mc$b) != ".")
        stop("could not find function `%\\%")
      
      if(deparse(mc$a) == ".") {
        if(!is.character(mc$b)) stop("could not find function .%\\%")
        return(invisible(NULL))
      }
      eval(mc$a)
    }
    

    当然,这对于常规使用来说有点笨拙,除非您在 IDE 中设置了注释/取消注释宏。还有一些地方它可能会导致语法错误,或者它无形地返回 NULL 的事实可能会产生意想不到的结果,所以我自己实际上不会使用它 - 它只是一种方法的说明。

    • 2
  2. jay.sf
    2023-12-16T23:48:44+08:002023-12-16T23:48:44+08:00

    如果这是关于包含/排除元素而不删除代码,则可以将 element 设置为NULL.

    > f <- \(x, include=TRUE) if (include) x else NULL
    > subset(mtcars, select=c(cyl, mpg, f(am), wt)) |> head()
                      cyl  mpg am    wt
    Mazda RX4           6 21.0  1 2.620
    Mazda RX4 Wag       6 21.0  1 2.875
    Datsun 710          4 22.8  1 2.320
    Hornet 4 Drive      6 21.4  0 3.215
    Hornet Sportabout   8 18.7  0 3.440
    Valiant             6 18.1  0 3.460
    > subset(mtcars, select=c(cyl, mpg, f(am, F), wt)) |> head()
                      cyl  mpg    wt
    Mazda RX4           6 21.0 2.620
    Mazda RX4 Wag       6 21.0 2.875
    Datsun 710          4 22.8 2.320
    Hornet 4 Drive      6 21.4 3.215
    Hornet Sportabout   8 18.7 3.440
    Valiant             6 18.1 3.460
    > inc <- FALSE
    > subset(mtcars, select=c(cyl, mpg, f(am, inc), f(wt, inc))) |> head()
                      cyl  mpg
    Mazda RX4           6 21.0
    Mazda RX4 Wag       6 21.0
    Datsun 710          4 22.8
    Hornet 4 Drive      6 21.4
    Hornet Sportabout   8 18.7
    Valiant             6 18.1
    
    • 1

相关问题

  • 将复制活动的序列号添加到 Blob

  • Packer 动态源重复工件

  • 选择每组连续 1 的行

  • 图形 API 调用列表 subscribedSkus 状态权限不足,但已授予权限

  • 根据列值创建单独的 DF 的函数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve