使用本机管道 |> 在基本 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 |> `[`(c("b", "c"))
Error: function '[' not supported in RHS call of a pipe
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法可以做到我所缺少的?
注意:如果您只想要一个列并且可以放入向量中,那么getElement
可以使用:
> dtf |> getElement("b")
[1] 4 5 6
Run Code Online (Sandbox Code Playgroud)
这是一种方法:
dtf |> (\(x) `[`(x, c("b", "c")))()
# b c
#1 4 7
#2 5 8
#3 6 9
Run Code Online (Sandbox Code Playgroud)
您必须使用匿名函数\(x)
并将其作为参数传递给[
. 不要忘记以括号结束()
。
归档时间: |
|
查看次数: |
1440 次 |
最近记录: |