簡體   English   中英

無法使用 dplyr 重命名列

[英]Can't rename columns with dplyr

我正在嘗試從Characteristics..genotype.基因型重命名數據框中的列Characteristics..genotype. genotype和從Characteristics..age. age

pData(raw_data) %>%
  rename(
    age = Characteristics..age.,
    genotype = Characteristics..genotype.
  )

我收到以下錯誤:

重命名錯誤(.,年齡 = 特征..年齡。,基因型 = 特征..基因型。):對象“特征..年齡。” 未找到

這沒有意義,因為數據框中存在列:

pData(raw_data)$Characteristics..genotype.

以上輸出:

[1] N171-HD82Q N171-HD82Q N171-HD82Q wt wt N171-HD82Q N171-HD82Q N171-HD82Q wt wt
[12] 重量 N171-HD82Q N171-HD82Q N171-HD82Q 重量 重量 重量
級別:N171-HD82Q wt

我錯過了什么?

一個選項是反引號

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.) 中的錯誤:
未使用的參數(基因型 = 特征..基因型。)

您可以使用rename_all並使用rename_all進行重命名,例如使用stringr::str_remove_all刪除開頭或"."所有"Characteristics.."實例"." 最后(用\\\\轉義的句點)。

library(tidyverse) # dplyr and stringr
df %>% 
  rename_all(str_remove_all, '^Characteristics\\.\\.|\\.$')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM