3

When using readr_0.1.1 to read in a .csv file with a missing field name, the name is automatically set to [EMPTY]:

library("readr")
library("dplyr")
df <- read_csv(",foo\n1,bar")

> names(df)
[1] "[EMPTY]" "foo" 

I am trying to rename "[EMPTY]" using dplyr_0.4.2 but I cannot find the right solution.

I have tried:

> rename(df, baz = [EMPTY])
Error: unexpected '[' in "rename(df, baz = ["

> rename_(df, "baz" = "[EMPTY]")
Error in parse(text = x) : <text>:1:1: unexpected '['
1: [
    ^

What is the right way to do it?

4

1 回答 1

4

您可以使用

dplyr::rename(df, baz = `[EMPTY]`)

我们使用的是反引号,而不是引号,因为我们指的是“非标准变量名”,例如:

df$`[EMPTY]`

?Quotes

标识符由一系列字母、数字、句点 (.) 和下划线组成。它们不能以数字或下划线开头,也不能以句点后跟数字。保留字不是有效的标识符。

字母的定义取决于当前的语言环境,但只有 ASCII 数字被认为是数字。

这样的标识符也称为句法名称,可以直接在 R 代码中使用。几乎总是可以使用其他名称,只要它们被引用。首选引号是反引号 (`),deparse 通常会使用它,但在许多情况下可以使用单引号或双引号(因为字符常量通常会转换为名称)。

于 2015-10-29T16:51:22.527 回答