r - 重命名不适用于以两个点开头的列名
问题描述
我更新了tidyverse
我的read_excel()
功能(来自readxl
)也发生了变化。没有标题的列现在称为..1
,..2
以此类推,以前称为X__1
, X__2
。
我正在尝试以rename()
两个点开头的这些列,但我收到一条错误消息。
这是一个例子:
library(tidyverse)
df <- tibble(a = 1:3,
..1 = 4:6)
df <- df %>%
rename(b = ..1)
抛出错误:
Error in .f(.x[[i]], ...) :
..1 used in an incorrect context, no ... to look in
如果我在名称周围使用反引号,我会得到同样的错误:rename(b = `..1`)
。
解决方案
这个janitor
包有一个非常方便的功能clean_names
来完成这样的任务。在这种情况下,它将替换..
来自readxl
的任何内容x
。我添加了另一..
列来展示替换是如何工作的。
library(tidyverse)
df <- tibble(a = 1:3,
..1 = 4:6,
..5 = 10:12)
df %>%
janitor::clean_names()
#> # A tibble: 3 x 3
#> a x1 x5
#> <int> <int> <int>
#> 1 1 4 10
#> 2 2 5 11
#> 3 3 6 12
中的命名设置似乎readxl
是一个有争议的话题:请参阅此问题以及其他有关从 Excel 工作表转换不可用名称的最佳方法。上面还有一个小插曲。老实说,最近几次我需要弄乱readxl
名称,我只是将数据框传递给janitor
.
推荐阅读
- r - R Maply to unzip - 文件路径更改
- android - 如何从 GeoJSON 或 mapboxId 在 Mapbox Android 中突出显示 LineString(或多边形)
- linux - 如何使用 awk 命令在日志文件中添加“日期”作为列
- python - Python中的元素乘法相当于Matlab
- python - 使用列表定义的列名初始化 pandas 数据框
- javascript - 需要帮助修改代码以连接到 MongoDB Atlas 而不是 localhost
- entity-framework - EF Lambda 表达式如何访问多个表中的数据
- scala - scala项目中文件的编译顺序
- ruby-on-rails - Ruby on Rails 测试 - ActiveRecord::RecordNotUnique: PG::UniqueViolation: 错误:重复键值违反唯一约束“xxx_xxxx_xxxx_pkey”
- r - 使用ggboxplot在R中的每个页面中保存具有多个页面的pdf的问题