我更新了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`)
如果在名称str
上加上反引号,则会出现相同的错误。
答案 0 :(得分:2)
..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
答案 1 :(得分:2)
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问题,以及有关从Excel工作表转换不可用名称的最佳方法等信息。上面还有一个vignette。老实说,最近几次我需要弄乱readxl
名称,我只是将数据帧传递给janitor
。