重命名创建的对象

问题描述 投票:0回答:1
library(vegan)
data(dune)
dune.spec<-data.frame(Species=colnames(dune))
species<-as.character(dune.spec$Species)


levels(species)[levels(species)=="Achimill"] <- "test"
library(dplyr)
species<-rename(species, replace = c("Achimill" = "test"))

我想重命名一个特定的名字。例如“Achimill”到“测试”。看起来像这么简单的事情,但我找不到一个有效的方法。这两种重命名功能都不起作用。

r dplyr
1个回答
1
投票
library(vegan)
data(dune)
dune.spec = data.frame(Species = colnames(dune))
species = as.character(dune.spec$Species)

speciescharacter,这就是为什么你不能让levels工作,因为它在factor上运作

class(species)
#[1] "character"

使用character可用的方法替换您想要的方式,例如base::gsub

species = gsub("Achimill", "test", species)

或者,由于您实际上可能正在尝试使用这些因素,因此请使用适当的方法对因子进行操作

dune.spec$Species = factor(dune.spec$Species, labels = gsub("Achimill", "test", levels(dune.spec$Species)))
dune.spec$Species
# [1] test     Agrostol Airaprae Alopgeni Anthodor Bellpere Bromhord Chenalbu
# [9] Cirsarve Comapalu Eleopalu Elymrepe Empenigr Hyporadi Juncarti Juncbufo
#[17] Lolipere Planlanc Poaprat  Poatriv  Ranuflam Rumeacet Sagiproc Salirepe
#[25] Scorautu Trifprat Trifrepe Vicilath Bracruta Callcusp
#30 Levels: test Agrostol Airaprae Alopgeni Anthodor Bellpere ... Vicilath
© www.soinside.com 2019 - 2024. All rights reserved.