重命名不适用于以两个点开头的列名
Renaming doesn't work for column names starting with two dots
我更新了 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`)
。
..1
是 R 中的保留字。参见 help("reserved")
和 help("..1")
。尝试引用它:
df %>% rename(b = "..1")
给予:
# A tibble: 3 x 2
a b
<int> <int>
1 1 4
2 2 5
3 3 6
janitor
package 有一个非常方便的函数 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
中的命名设置似乎是一个有争议的话题:请参阅 this issue, among others on the best way to convert unusable names from Excel sheets. There's also a vignette。老实说,最近几次我需要弄乱 readxl
名称,我只是将数据框传递给 janitor
.
我更新了 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`)
。
..1
是 R 中的保留字。参见 help("reserved")
和 help("..1")
。尝试引用它:
df %>% rename(b = "..1")
给予:
# A tibble: 3 x 2
a b
<int> <int>
1 1 4
2 2 5
3 3 6
janitor
package 有一个非常方便的函数 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
中的命名设置似乎是一个有争议的话题:请参阅 this issue, among others on the best way to convert unusable names from Excel sheets. There's also a vignette。老实说,最近几次我需要弄乱 readxl
名称,我只是将数据框传递给 janitor
.