r - 如何一步步查看R中函数的过程?

标签 r

Df:

df <- tibble(
  a = c("z", "x", "y"),
  b = c("m", "n", "o"),
  c = c("p", "q", "r")
)

-我想看看 names(.) 的结果(检查)在:

df %>% 
  set_names(c(names(.)[1], unlist(.[2, 2:3])))

-我知道是c("a", "b", "c") ,或 unlist(.[2, 2:3]) 中的结果.这是一个例子,我想将这个想法应用到 R 中的任何操作中。那里有什么东西吗?我想深入了解某些功能在做什么。

最佳答案

也许您正在寻找 boomer package通过@Moody_Mudskipper:

boomerlogo.png

安装

使用remotes::install_github("moodymudskipper/boomer")安装

例子(来自github):

library(boomer)
boom(1 + !1 * 2)
#> 1 * 2
#> [1] 2
#> !1 * 2
#> [1] FALSE
#> 1 + !1 * 2
#> [1] 1

boom(subset(head(mtcars, 2), qsec > 17))
#> head(mtcars, 2)
#>               mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4      21   6  160 110  3.9 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag  21   6  160 110  3.9 2.875 17.02  0  1    4    4
#> qsec > 17
#> [1] FALSE  TRUE
#> subset(head(mtcars, 2), qsec > 17)
#>               mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4 Wag  21   6  160 110  3.9 2.875 17.02  0  1    4    4

# You can use boom() with {magrittr} pipes, just pipe to boom() at the end of a pipe chain.
library(magrittr)
mtcars %>%
  head(2) %>%
  subset(qsec > 17) %>%
  boom()
#> head(., 2)
#>               mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4      21   6  160 110  3.9 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag  21   6  160 110  3.9 2.875 17.02  0  1    4    4
#> qsec > 17
#> [1] FALSE  TRUE
#> subset(., qsec > 17)
#>               mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4 Wag  21   6  160 110  3.9 2.875 17.02  0  1    4    4
#> mtcars %>% head(2) %>% subset(qsec > 17)
#>               mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4 Wag  21   6  160 110  3.9 2.875 17.02  0  1    4    4

#If a call fails, {boomer} will print intermediate outputs up to the occurrence of the error, it can help with debugging:
"tomato" %>%
  substr(1, 3) %>%
  toupper() %>%
  sqrt() %>%
  boom()
#> substr(., 1, 3)
#> [1] "tom"
#> toupper(.)
#> [1] "TOM"
#> Error in .Primitive("sqrt")(.): non-numeric argument to mathematical function

Boomer 在执行中间步骤时打印输出,因此不会说明未执行的内容,这与返回解析树的 lobstr::ast() 等函数形成对比。

显然 boomer 并没有“很好地”使用 set_names 函数;这是一个类似的例子:

df %>% 
  names(.)[1] %>% 
  boom()
#>names(.)
#>[1] "a" "b" "c"
#>.[names(.), 1]
#> A tibble: 3 x 1
#>      a
#>  <dbl>
#>1    NA
#>2    NA
#>3    NA
#>df %>% names(.)[1]
#> A tibble: 3 x 1
#>      a
#>  <dbl>
#>1    NA
#>2    NA
#>3    NA

关于r - 如何一步步查看R中函数的过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67206020/

相关文章:

r - 将数据框组合成列表

r - 使用 XTS 查找早于特定时间戳的最新观察

r - R dplyr中行之间的时间差,不同单位

r - 识别并删除 "NA"和其他错误

用于 R 树实现的 R 库

r - 从列表中提取值和属性并将其转换为 R 中的数据框

r - R 中的 For 循环分块

r - 在格子中绘制选定的随机效应观测值

r - 求 R 中循环的 x 轴截距和 y 轴截距

php - lattice levelplot 仅在 RApache 下失败