无法使用 dplyr 重命名列

0 r tidy dplyr

我正在尝试将数据框中的列从Characteristics..genotype.togenotype和 from Characteristics..age.to重命名为age

pData(raw_data) %>%
  rename(
    age = Characteristics..age.,
    genotype = Characteristics..genotype.
  )
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

重命名错误(.,年龄=特征..年龄.,基因型=特征..基因型.):对象“特征..年龄”。未找到

这是没有意义的,因为数据框中存在列:

pData(raw_data)$Characteristics..genotype.

Run Code Online (Sandbox Code Playgroud)

上面的输出:

[1] N171-HD82Q N171-HD82Q N171-HD82Q wt wt wt N171-HD82Q N171-HD82Q N171-HD82Q wt wt [12] wt N171-HD82Q N171-HD82Q
N171-HD82Q wt wt wt
级别:N171-HD82Q wt

我缺少什么?

akr*_*run 5

一个选项是反引号

library(dplyr)
 pData(raw_data) %>%
  rename(
    age = `Characteristics..age.`,
   genotype = `Characteristics..genotype.`
  )   
Run Code Online (Sandbox Code Playgroud)

或者根据错误(用 重现plyr::rename),最好使用::指定从中加载的包以避免屏蔽

pData(raw_data) %>%
  dplyr::rename(
    age = Characteristics..age.,
   genotype = Characteristics..genotype.
  )   
Run Code Online (Sandbox Code Playgroud)

但是,在测试时dplyr_0.8.3,它工作得很好,没有反引号

data(mtcars)
raw_data <- head(mtcars)
names(raw_data)[1] <- "Characteristics..genotype."
raw_data %>%
      dplyr::rename(genotype = Characteristics..genotype.)
#             genotype cyl disp  hp drat    wt  qsec vs am gear carb
# ...
Run Code Online (Sandbox Code Playgroud)

问题是plyr还包含相同的rename功能,因此如果也加载了该包,它可能会掩盖dplyr::rename

raw_data %>% 
    plyr::rename(genotype = Characteristics..genotype.)
Run Code Online (Sandbox Code Playgroud)

plyr::rename(., genotype = Characteristics..genotype.) 中的错误:
未使用参数(genotype = Characteristics..genotype.)