r - 为什么 colnames 函数与管道运算符和 [ 选择器一起使用时会生成 tibble(而不是向量)?
问题描述
问题:为什么该colnames
函数与管道运算符%>%
和[
选择器一起使用时会生成一个小标题?
示例:给定以下小标题:
library(tidyverse)
x <- tribble(
~a, ~b,
1, 0,
0, 1
)
问题:当与管道运算符和[
选择器一起使用时,colnames 函数会生成一个 tibbe:
x %>% colnames(.)[1]
#> # A tibble: 2 x 1
#> a
#> <dbl>
#> 1 NA
#> 2 NA
而我希望它生成一个向量,就好像没有使用管道运算符一样:
colnames(x)[1]
#> [1] "a"
解决方案
管道将左侧插入到右侧主函数的第一个参数中,在本例中为 [ 。那就是这三个是相同的:
x %>% colnames(.)[1]
x %>% `[`(colnames(.), 1)
x %>% `[`(., colnames(.), 1)
最后一个是相同的,因为如果主函数的参数之一是点,它不会插入左侧。
为了防止它插入点使用 {...}
x %>% { colnames(.)[1] }
或使用:
x %>% colnames %>% .[1]
或使用dplyr::first
dplyr::slice_head(n = 1) 或 dplyr::nth(1) 或purrr::pull(1)
或magrittr::extract(1)
或head(1)
x %>% colnames %>% first
推荐阅读
- r - geom_beeswarm 和手动设置颜色 (scale_fill_manual)
- python - 如何在 python 代码中将一个文件夹的数据从 Blob 存储复制到另一个 Blob 存储?
- python - 在 Python 中使用 for ... in range 循环查找某个区间内的素数
- android - 在 JNI C 中检查包是否安装在 android 设备上
- vue.js - 如何在 vuex 模块中调用 vue 方法?
- node.js - Angular 8 - 从“ng serve..”获取配置参数(Ej.--configuration)
- javascript - 如何设置电子应用程序的语言环境?
- r - R 遇到致命错误并终止;在我导出 500GB 数据并且从那时起无法读取任何文件之后
- mysql - 如何使用以下视图在视图中实现多对多关系,我想在视图中的同一个表中显示 Employee 和 senctionBy
- python - 使用多个输入将功能连接到 Keras 功能 API 时出现错误