相关疑难解决方法(0)

Bizarro 管道 ->.; 是否有不推荐使用的缺点?

从 R-Version 4.1.0 开始,管道|>处于稳定版本。当将 lhs 传递给第一个参数以外的参数时,手册的示例显示:

mtcars |> subset(cyl == 4) |> (function(d) lm(mpg ~ disp, data = d))()
Run Code Online (Sandbox Code Playgroud)

或使用时 \(x)

mtcars |> subset(cyl == 4) |> (\(d) lm(mpg ~ disp, data = d))()
Run Code Online (Sandbox Code Playgroud)

或者使用当前需要激活的PIPEBIND

Sys.setenv(`_R_USE_PIPEBIND_` = TRUE) 
mtcars |> subset(cyl == 4) |> . => lm(mpg ~ disp, data = .)
Run Code Online (Sandbox Code Playgroud)

|>也可以使用Bizarro 管道 代替->.;

mtcars |> subset(cyl == 4) ->.; lm(mpg ~ disp, data = .)
Run Code Online (Sandbox Code Playgroud)

由于 R 中管道符号的一个目的是允许以一种可能使处理步骤序列 更容易遵循 …

r

9
推荐指数
1
解决办法
587
查看次数

管道纯粹在基础 R(“基础管道”)中?

有没有办法在基本 R 中进行管道传输,而无需定义自己的函数(即“开箱即用”的东西),也无需加载任何外部包?

也就是说,一些(基数 R)替代 magrittr pipe %>%。可能在即将推出的 R (?)

此功能在 R 4.0.3 中是否可用。如果不是,它是在哪个 R 版本中找到的,如果是,这是如何实现的?

r magrittr

5
推荐指数
3
解决办法
1317
查看次数

使用本机管道 |> 在基本 R 中选择多列的方法?

使用本机管道 |> 在基本 R 中选择数据帧的多列有哪些好方法?(即,没有 tidyverse/dplyr 来减少外部依赖性)。

如果我们有数据框

dtf <- data.frame(a = 1:3, b = 4:6, c = 7:9)
Run Code Online (Sandbox Code Playgroud)

然后我们可以选择列 b 和 c

> dtf[c("b", "c")]
  b c
1 4 7
2 5 8
3 6 9
Run Code Online (Sandbox Code Playgroud)

在 tidyverse 中使用本机管道执行此操作的一种优雅方法是

> dtf |> dplyr::select(b, c)
  b c
1 4 7
2 5 8
3 6 9
Run Code Online (Sandbox Code Playgroud)

我对原生管道的最佳基础 R 尝试是

> dtf |> subset(select = c("b", "c"))
  b c
1 4 7
2 5 8
3 6 9
Run Code Online (Sandbox Code Playgroud)

更简洁(但失败的尝试)是

> dtf …
Run Code Online (Sandbox Code Playgroud)

r dataframe dplyr

5
推荐指数
1
解决办法
1440
查看次数

从向量创建矩阵并使用基管翻转它

我有以下向量:

v<-c(1,2,3,4,1,2,3,4,2) 
Run Code Online (Sandbox Code Playgroud)

我想将其“转换”为 3x3 矩阵:

matrix <- matrix(data=v,ncol=3)
Run Code Online (Sandbox Code Playgroud)

然后我想“翻转”(不是转置)

flip_matrix<-matrix[,3:1,drop=FALSE]
Run Code Online (Sandbox Code Playgroud)

使用 tidyverse 管道来链接所有这些非常容易,但为了减少依赖关系,我想使用基本 R 来解决这个问题。我可以创建多个对象并忘记管道,但我需要知道这是如何实现的与基管一起完成。到目前为止,我没有运气:

v<-c(1,2,3,4,1,2,3,4,2)

final_matrix <- matrix(data=v,ncol=3) |> .[,3:1.drop=FALSE]()
Run Code Online (Sandbox Code Playgroud)

这告诉我对象“。” 没找到。我尝试过其他迭代但没有运气......感谢您的帮助!

r

5
推荐指数
1
解决办法
94
查看次数

标签 统计

r ×4

dataframe ×1

dplyr ×1

magrittr ×1