简体   繁体   English

重命名创建的对象<-as.character

[英]rename object created <-as.character

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"))

I'd like to rename a specific name. 我想重命名一个特定的名字。 For example "Achimill" to "test". 例如从“ Achimill”到“ test”。 Seems like such a simple thing to do but I can't find a method that works. 似乎做起来很简单,但是我找不到有效的方法。 Neither levels of rename function works. 这两个级别的重命名功能均不起作用。

library(vegan)
data(dune)
dune.spec = data.frame(Species = colnames(dune))
species = as.character(dune.spec$Species)

species is character , that's why you can't get levels to work, as it operates on factor species就是character ,这就是为什么您无法获得levels的原因,因为它取决于factor

class(species)
#[1] "character"

Substitute the way you want using methods available for character , such as base::gsub 使用可用于character方法来替代所需的方式,例如base::gsub

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

Alternatively, since it seems you may actually be trying to use the factors, operate on a factor using appropriate methods 或者,由于似乎您实际上可能正在尝试使用这些因数,因此请使用适当的方法对一个因数进行操作

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM