gpt4 book ai didi

r - 使用 native 管道 |> 在 base R 中选择多列的方法?

转载 作者:行者123 更新时间:2023-12-05 04:38:22 25 4
gpt4 key购买 nike

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

如果我们有数据框

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

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

> dtf[c("b", "c")]
b c
1 4 7
2 5 8
3 6 9

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

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

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

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

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

> dtf |> `[`(c("b", "c"))
Error: function '[' not supported in RHS call of a pipe

有没有更好的方法来做到这一点,我想念的是什么?

注意:如果您只需要一个列并且可以放入向量中,则可以使用 getElement:

> dtf |> getElement("b")
[1] 4 5 6

最佳答案

这是一种方法:

dtf |> (\(x) `[`(x, c("b", "c")))()
# b c
#1 4 7
#2 5 8
#3 6 9

您必须使用匿名函数 \(x) 并将其作为参数传递给 [。不要忘记以括号 () 结尾。

关于r - 使用 native 管道 |> 在 base R 中选择多列的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70625194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com