我正在尝试将数据框中的列从Characteristics..genotype.
重命名为genotype
,并从Characteristics..age.
重命名为age
:
pData(raw_data) %>%
rename(
age = Characteristics..age.,
genotype = Characteristics..genotype.
)
我收到以下错误:
重命名错误(。,age = Characteristics..age。,genotype = Characteristics..genotype。):对象'Characteristics..age。'找不到
这没有意义,因为数据框中存在列:
pData(raw_data)$Characteristics..genotype.
以上内容的输出
[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
我想念什么?
答案 0 :(得分:4)
一个选项将是反引号
library(dplyr)
pData(raw_data) %>%
rename(
age = `Characteristics..age.`,
genotype = `Characteristics..genotype.`
)
或者根据错误(与plyr::rename
一起复制),最好使用::
指定要从中加载的包以避免掩盖
pData(raw_data) %>%
dplyr::rename(
age = Characteristics..age.,
genotype = Characteristics..genotype.
)
但是,在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
# ...
问题在于plyr
还包含相同的rename
函数,因此,如果还加载了程序包,它可能会掩盖dplyr::rename
raw_data %>%
plyr::rename(genotype = Characteristics..genotype.)
plyr :: rename(。,genotype = Characteristics..genotype。)错误:
未使用的参数(基因型=特征..基因型。)
答案 1 :(得分:3)
您可以使用rename_all
并使用函数进行重命名,例如使用stringr::str_remove_all
删除开头的"Characteristics.."
或结尾的"."
的所有实例(用\\
进行转义的时段)。
library(tidyverse) # dplyr and stringr
df %>%
rename_all(str_remove_all, '^Characteristics\\.\\.|\\.$')