我正在尝试将数据框中的列从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
我缺少什么?
一个选项是反引号
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.)