在R中使用ifelse on factor

ego*_*go_ 5 if-statement r r-factor

我正在重组一个物种名称的数据集.它有一个带有拉丁名称的列和具有普通名称的列(如果可用).我想制作第3列,在可用时给出琐碎的名称,否则为拉丁名称.琐碎的名字和拉丁名字都属于因子级.我试过if-loop:

  if(art2$trivname==""){  
    art2$artname=trivname   
    }else{  
      art2$artname=latname  
    }  
Run Code Online (Sandbox Code Playgroud)

它给了我正确的trivnames,但只在提供拉丁名字时给出了NA.
当我使用ifelse时,我只会得到数字.

一如既往,所有帮助赞赏:)

All*_*rdt 6

例:

art <- data.frame(trivname = c("cat", "", "deer"), latname = c("cattus", "canis", "cervus"))
art$artname <- with(art, ifelse(trivname == "", as.character(latname), as.character(trivname)))
print(art)
#   trivname latname artname
# 1      cat  cattus     cat
# 2            canis   canis
# 3     deer  cervus    deer
Run Code Online (Sandbox Code Playgroud)

(我认为默认选项(stringsAsFactors = FALSE)对大多数人来说会更容易,但是你去......)